1. 程式人生 > >設計模式之3種工廠模式對比和簡單介紹

設計模式之3種工廠模式對比和簡單介紹

一、簡單工廠模式

模式定義

簡單工廠模式又稱靜態工廠模式。可以根據引數的不同返回不同類的例項。定義一個類來建立其它類的例項。

模式角色

簡單工廠模式包含如下角色
Factory:工廠角色
Product:抽象產品角色
ConcreteProduct:具體產品角色

這裡寫圖片描述

簡單例項

public abstract class Produce{
    public abstract void m1()''
}
public class ConcreteProduct extends Produce{
    public void m1(){}
}
public
class Factory{ public static Produce methodA(){ return new ConcreteProduct();//建立具體產品 }; }

場景應用

簡單工廠模式在jdk有不少應用,比如
java.text.DateFormat

public final static DateFormat getDateInstance();
public final static DateFormat getDateInstance(int style);
public final static DateFormat getDateInstance
(int style,Locale locale);

簡單工廠模式適用場景:
工廠類負責建立的物件比較少;客戶端只知道傳入工廠類的引數,物件建立過程不會影響客戶端程式碼

優缺點

優點:簡單工廠模式將物件建立和本身業務處理分開,降低了耦合

缺點:工廠類集中了所有產品建立邏輯,一旦新增產品就得修改工廠類

二、工廠方法模式

定義

工廠方法模式:又稱工廠模式,也叫虛擬構造器模式,屬於構建型設計模式,工廠方法模式是在簡單工廠模式上進行拓展,生產產品的過程由具體工廠類實現,基類只實現介面,這使得工廠方法模式可以在不修改工廠角色的情況下,引進新的產品。

模式結構

工廠方法模式包含如下結構:

Product:抽象產品

ConcreteProduct:具體產品

Factory:抽象工廠

ConcreteFactory:具體工廠

三、抽象工廠模式

模式角色

抽象工廠模式包含如下角色:

AbstractFactory:抽象工廠

ConcreteFactory:具體工廠

Product:具體產品

AbstractProduct:抽象產品

抽象工廠模式和工廠模式的區別

抽象工廠模式是所有形式的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式與工廠方法模式最大的區別在於,工廠方法模式針對的是一個產品等級結構,而抽象工廠模式則需要面對多個產品等級結構。