抽象工廠與工廠模式例子

NativeFactory。Java

 

package com;
//定義 人有殺日本人 和 殺美國人兩個方法
interface NativePerson{
 public void killAmeria();
 public void killJapan();
}
//中國人實現了人的接口 
class NativeChinese implements NativePerson{
 //中國人殺美國人
 public void killAmeria() { 
  System.out.println("Chinese kill Ameria");
 }
 //中國人殺日本人
 public void killJapan() {
  System.out.println("Chinese kill Japan");
 }

}
//俄國人實現了人的接口
class NativeRussia implements NativePerson{
 public void killAmeria()
 {
  System.out.println("Russia kill Ameria");
 }
 public void killJapan()
 {
  System.out.println("Russia kill Japan");
 }
}
public class NativeFactory
{
 /**
  * 假如 我要添加朝鮮人 就不需要動前面的邏輯 只需要假如 i==2
   return new CX();就行了 我們不需要通過new 關鍵字去實例化了
   在整個就不涉及到Sample的具體子類,達到封裝效果,也就減少錯誤修改的機會,
   這個原理可以用很通俗的話來比喻:就是具體事情做得越多,越容易範錯誤.
   這每個做過具體工作的人都深有體會,相反,
   官做得越高,說出的話越抽象越籠統,範錯誤可能性就越少.
   **/
 public static NativePerson getPerson(int i)
 {
  if(i==0)
   return new NativeChinese();
  else
   return new NativeRussia();
 }
 public static void main(String[] args) {
  NativePerson person=NativeFactory.getPerson(0);
  person.killAmeria();
  person.killJapan();
 }
}

 

 

UFOFactory.java

 

package com;

//定義 人有殺日本人 和 殺美國人兩個方法
interface UFOPerson{
 public void killAmeria();
 public void killJapan();
}
//中國人實現了人的接口 
class UFOChinese implements UFOPerson{
 //中國人殺美國人
 public void killAmeria() { 
  System.out.println("UFOChinese kill Ameria");
 }
 //中國人殺日本人
 public void killJapan() {
  System.out.println("UFOChinese kill Japan");
 }

}
//俄國人實現了人的接口
class UFORussia implements UFOPerson{

 public void killAmeria()
 {
  System.out.println("UFORussia kill Ameria");
 }

 public void killJapan()
 {
  System.out.println("UFORussia kill Japan");
 }
}
public class UFOFactory
{

 public static UFOPerson getPerson(int i)
 {
  if(i==0)
   return new UFOChinese();
  else
   return new UFORussia();
 }
 public static void main(String[] args) {
  UFOPerson person=UFOFactory.getPerson(0);
  person.killAmeria();
  person.killJapan();
 }
}

 

 

AbstractFactory.java

 

/**
 * 假如現在有一個nativ工廠 又多了個UFO工廠 現在要同時生產不能中國人和俄國人
 * 其實就是多個工廠模式的聯合 就是抽象工廠模式

   有幾個工廠要磨合成一個抽象工廠模式其實就很簡單

  添加一個抽象類  該抽象類中添加方法   分別用於獲取 每個工廠的接口方法

  工廠類中有幾個方法 就產生幾個工廠 繼承抽象工廠   就行了
 */
abstract class CommonFactory {
 public abstract NativePerson getNativePerson();
 public abstract UFOPerson getUFOPerson();
}
class ChineseFactory extends CommonFactory {
 public NativePerson getNativePerson() {
  return new NativeChinese();
 }

 public UFOPerson getUFOPerson() {
  return new UFOChinese();
 }
}

class RussionFactory extends CommonFactory {
 public NativePerson getNativePerson() {
  return new NativeRussia();
 }

 public UFOPerson getUFOPerson() {
  return new UFORussia();
 }
}

 

 

 

 

642 924 975
1372

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章