android設計模式——工廠方法模式
阿新 • • 發佈:2018-11-06
定義:定義一個用於建立物件的介面,讓子類決定例項化哪個類.
使用場景:
在任何需要生成複雜物件的地方,都可以使用工廠方法模式.
應用舉例:去工廠提貨物,只需說要什麼貨,不必知道貨物是怎麼做出來的
類圖:
- Factory,抽象的工廠類
- ConcreteFactory,具體的工廠類
- Product,抽象的產品類
- ConcreteProduct,具體的產品類
關鍵程式碼:建立過程在工廠的子類中進行。
優點:
- 一個呼叫者想建立一個物件,只要知道其名稱就可以了。
- 擴充套件性高,如果想增加一個產品,只要擴充套件一個工廠類就可以。
- 遮蔽產品的具體實現,呼叫者只關心產品的介面。
缺點:
- 每次增加一個產品時,都需要增加一個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。這並不是什麼好事。
abstract class Product{ public abstract void method(); } class ConcreteProductA extends Product{ @Override public void method() { // TODO 自動生成的方法存根 System.out.println("我是具體的產品A"); } } class ConcreteProductB extends Product{ @Override public void method() { // TODO 自動生成的方法存根 System.out.println("我是具體的產品B"); } } abstract class Factory { public abstract Product creatProduct(); } class ConcreteFactor extends Factory{ @Override public Product creatProduct() { // TODO 自動生成的方法存根 return new ConcreteProductA(); } }
public static void main(String[] args) {
// TODO 自動生成的方法存根
Factory factory = new ConcreteFactor();
Product product = factory.creatProduct();
product.method();
}