設計模式——工廠方法模式

知識點:工廠方法模式建立對象html

(一)什麼是工廠方法模式設計模式

定義一個建立產品對象的工廠接口,子類工廠實現接口來建立具體的產品對象ide

(二)角色學習

抽象工廠:是工廠方法模式的核心,建立具體對象的的工廠類必須實現這個接口spa

具體工廠:實現抽象工廠接口的具體工廠,用來建立具體產品對象設計

抽象產品:具體產品對象擁有的共同父類或者接口htm

具體產品:實現抽象產品的接口,包含了產品的具體細節對象

產品使用者:使用產品者blog

(三)代碼實例接口

//工廠方法設計模式
public class FactoryMethodTest {
public static void main(String[] args) {
//建立某種工廠,建立對應的產品對象,執行產品對象中的doWork()方法
PersonWorkFactory stuFac=new StudentWorkFactory();
stuFac.getWorkClass().doWork();

PersonWorkFactory teaFac=new TeacherWorkFactory();
teaFac.getWorkClass().doWork();
}
}
//抽象工廠
interface PersonWorkFactory{
Work getWorkClass();
}
//具體工廠,生產產品
class StudentWorkFactory implements PersonWorkFactory{
@Override
public Work getWorkClass() {
return new StudentWork();
}
}
class TeacherWorkFactory implements PersonWorkFactory{
@Override
public Work getWorkClass() {
return new TeacherWork();
}
}
//抽象產品
interface Work{
void doWork();
}
//具體產品
class StudentWork implements Work{

@Override
public void doWork() {
System.out.println("學習!");
}
}
class TeacherWork implements Work{
@Override
public void doWork() {
System.out.println("教學生知識!");
}
}

執行結果

上面的核心工廠PersonWorkFactory不負責產品對象的建立工做,是一個抽象工廠的角色,只負責具體工廠子類實現的接口,這樣抽象化的好處使得系統在不修改具體工廠角色的狀況下,能夠引進新的產品,遵循開閉原則,提升了系統的可擴展性。

(四)優勢
(1)使用工廠方法建立具體產品對象,隱藏了具體對象的建立細節,只須要關心具體產品對應的工廠
(2)遵循開閉原則,當加入新的產品類時,只須要同時加入相應的工廠類,實現擴展,無需修改原來的代碼,提升了代碼的可擴展性

參考博客:https://www.cnblogs.com/chenxkang/p/6689631.html https://www.cnblogs.com/chenpi/p/5141376.html#_label3
相關文章
相關標籤/搜索