1. 程式人生 > >03抽象工廠模式AbstractFactory

03抽象工廠模式AbstractFactory

什麽是 蘋果 creat height color 圖片 情況 width pub

一、什麽是抽象工廠模式

  抽象工廠模式是所有形態的工廠模式中最為抽 象和最其一般性的。抽象工廠模式可以向客戶端 提供一個接口,使得客戶端在不必指定產品的具 體類型的情況下,能夠創建多個產品族的產品對 象。

二、產品族和產品等級結構

技術分享圖片

三、模式中包含的角色及其職責

  1.抽象工廠(Creator)角色 抽象工廠模式的核心,包含對多個產品結構的聲明,任何工廠類都必須實現這個接口。

  2.具體工廠( Concrete Creator)角色 具體工廠類是抽象工廠的一個實現,負責實例化某個產品族中的產品對象。

   3.抽象(Product)角色 抽象模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。

  4.具體產品(Concrete Product)角色 抽象模式所創建的具體實例對象 總結:抽象工廠中方法對應產品結構,具體工廠對應產品族。

抽象蘋果  實現水果

1 public abstract class Apple implements Fruit{
2     /*
3      * 采集
4      */
5     public abstract void get();
6 }

抽象香蕉  實現水果

1 public abstract class Banana implements Fruit{
2     /*
3      * 采集
4 */ 5 public abstract void get(); 6 }

水果接口

1 public interface Fruit {
2     /*
3      * 采集
4      */
5     public void get();
6 }

水果工廠接口

1 public interface FruitFactory {
2     //實例化Apple
3     public Fruit getApple();
4     //實例化Banana
5     public Fruit getBanana();
6 }

北方蘋果  繼承蘋果

1 public class NorthApple extends Apple {
2 
3     public void get() {
4         System.out.println("采集北方蘋果");
5     }
6 }

北方香蕉  繼承香蕉

1 public class NorthBanana extends Banana {
2 
3     public void get() {
4         System.out.println("采集北方香蕉");
5     }
6 }

北方水果工廠  實現水果工廠

 1 public class NorthFruitFactory implements FruitFactory {
 2 
 3     public Fruit getApple() {
 4         return new NorthApple();
 5     }
 6 
 7     public Fruit getBanana() {
 8         return new NorthBanana();
 9     }
10 }

南方蘋果  繼承蘋果

1 public class SouthApple extends Apple {
2 
3     public void get() {
4         System.out.println("采集南方蘋果");
5     }
6 }

南方香蕉  繼承香蕉

1 public class SouthBanana extends Banana {
2 
3     public void get() {
4         System.out.println("采集南方香蕉");
5     }
6 }

南方水果工廠  實現水果工廠

 1 public class SouthFruitFactory implements FruitFactory {
 2 
 3     public Fruit getApple() {
 4         return new SouthApple();
 5     }
 6 
 7     public Fruit getBanana() {
 8         return new SouthBanana();
 9     }
10 }

溫室蘋果  繼承蘋果

1 public class WenshiApple extends Apple {
2 
3     public void get() {
4         System.out.println("采集溫室蘋果");
5     }
6 }

溫室香蕉  繼承香蕉

1 public class WenshiBanana extends Banana {
2 
3     public void get() {
4         System.out.println("采集溫室香蕉");
5     }
6 }

溫室水果工廠  實現水果工廠

 1 public class WenshiFruitFactory implements FruitFactory {
 2 
 3     public Fruit getApple() {
 4         return new WenshiApple();
 5     }
 6 
 7     public Fruit getBanana() {
 8         return new WenshiBanana();
 9     }
10 }

03抽象工廠模式AbstractFactory