抽象產品(定義產品的介面,產品物件的公共父類)
具體產品(實現產品的介面)
抽象工廠(宣告工廠方法,返回乙個產品)
具體工廠(抽象工廠的子類,客戶端呼叫,返回乙個具體的例項)
需求:日誌記錄器可以通過很多途徑儲存日誌,使用者可以修改配置檔案,靈活的更換日誌記錄的方式,為了更好的封裝記錄器的初始化過程,並保證多種記錄器切換的靈活性,使用工廠方法模式設計該系統。
抽象產品介面:logger
//抽象產品類
public
inte***ce
logger
具體產品實現:databaselogger
,filelogger
import com.daq.factorymethod.logger;
public
class
databaselogger
implements
logger
}
import com.daq.factorymethod.logger;
public
class
filelogger
implements
logger
}
抽象工廠介面:logge***ctory
import com.daq.factorymethod.logger;
//抽象工廠介面
public
inte***ce
logge***ctory
具體工廠實現:databaselogge***ctory
,filelogge***ctory
import com.daq.factory.logge***ctory;
import com.daq.factorymethod.logger;
import com.daq.factorymethod.impl.databaselogger;
public
class
databaselogge***ctory
implements
logge***ctory
}
import com.daq.factory.logge***ctory;
import com.daq.factorymethod.logger;
import com.daq.factorymethod.impl.filelogger;
public
class
filelogge***ctory
implements
logge***ctory
}
客戶端測試:client
import com.daq.factory.logge***ctory;
import com.daq.factory.impl.filelogge***ctory;
import com.daq.factorymethod.logger;
public
class
client
}
如果要增加新的功能,只需要對應的增加乙個新的具體工廠類,然後在客戶端**中修改具體工廠類的類名,原有類庫的**無需修改。
通過引入配合檔案並使用反射機制可以實現在不修改客戶端**的基礎上更換具體共產類
,系統更符合開閉原則,具備更好的擴充套件性。
建立型 工廠方法模式
1 工廠方法模式意圖 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factory method使乙個類的例項化延遲到其子類。工廠方法模式用於為屬於同一類別的產品定義對應的具體工廠類,並將具體工廠類開放給使用者類來使用。2 應用場景 考慮乙個榨汁機的應用場景。榨汁機可以用來製作蘋果汁 西瓜汁...
設計模式 建立型 工廠方法模式
建立性模式有五種 1.工廠模式 簡單工廠模式 經常被用到,不屬於gof23種設計模式 工廠方法模式 抽象工廠模式 2.建造者模式 3.原型模式 4.單例模式 工廠方法 factory method 模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立...
建立型設計模式 工廠方法模式
工廠方法模式解決的是,不像簡單工廠似的,要增加產品必須改工廠類的 實現思路是,1.抽象工廠類 2.抽象產品類 3.具體工廠類 繼承抽象工廠類 4.具體產品類 繼承抽象產品類 5.外界呼叫。1.抽象工廠類 建立抽象工廠類 abstract class factory2.抽象產品類 建立抽象產品類 ab...