知識點:工廠方法模式建立對象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("教學生知識!");
}
}
執行結果:
![](http://static.javashuo.com/static/loading.gif)
上面的核心工廠PersonWorkFactory不負責產品對象的建立工做,是一個抽象工廠的角色,只負責具體工廠子類實現的接口,這樣抽象化的好處使得系統在不修改具體工廠角色的狀況下,能夠引進新的產品,遵循開閉原則,提升了系統的可擴展性。
(四)優勢
(1)使用工廠方法建立具體產品對象,隱藏了具體對象的建立細節,只須要關心具體產品對應的工廠
(2)遵循開閉原則,當加入新的產品類時,只須要同時加入相應的工廠類,實現擴展,無需修改原來的代碼,提升了代碼的可擴展性
參考博客:https://www.cnblogs.com/chenxkang/p/6689631.html https://www.cnblogs.com/chenpi/p/5141376.html#_label3