JAVA簡單工廠模式
阿新 • • 發佈:2019-01-09
1.工廠模式概念
工廠模式是常見的建立模式之一。 定義:工廠模式是我們最常用的例項化物件模式了,是用工廠方法代替new操作的一種模式; 核心: (1)例項化物件,用工廠方法代替new操作。 (2)將選擇實現類,建立物件統一管理和控制,從而將呼叫者跟我們的實現類解耦。 特點:實現了建立者和呼叫者的分離。 分類: (1)簡單工廠模式(Simple Factory Pattern):用來生產同一等級結構中的任意產品。(對於增加新的產品,需要修改已有的程式碼) (2)工廠方法模式(Factory Method) :用於生產同一等級結構中的固定產品。(2.簡單工廠模式(Simple Factory Pattern)
又叫靜態工廠方法模式(Static FactoryMethod Pattern),它由三種角色組成(關係見下面的類圖):
1、工廠類角色:這是本模式的核心,含有一定的商業邏輯和判斷邏輯。在java中它往往由一個具體類實現。
2、抽象產品角色:它一般是具體產品繼承的父類或者實現的介面。在java中由介面或者抽象類來實現。
3、具體產品角色:工廠類所建立的物件就是此角色的例項。在java中由一個具體類實現。
簡單工廠模式比較簡單,這裡就寫一個例項吧!對比非工廠模式與簡單工廠模式。奧迪(audi)和比亞迪(byd)車的跑法。哈哈,不要太認真,這裡只是用來舉例而已。3.UML圖
非工廠模式:簡單工廠模式:
4.非工廠模式與簡單工廠模式具體比較
(1)抽象產品
//抽象產品角色 public interface Car { public void run(); //更多具體邏輯....... }
(2)具體產品
奧迪產品:
//具體產品奧迪
public class AuDi implements Car{
@Override
public void run() {
System.out.println("奧迪跑起來了");
} //更多具體邏輯......
}
比亞迪產品:
//具體產品比亞迪 public class BYD implements Car{
@Override
public void run() {
System.out.println("比亞迪跑起來了"); }
}
非工廠模式測試:
public class Client { //測試客戶端
//建立者和呼叫者沒有分離
public static void main(String[] args) {
Car auDi=new AuDi();//在這裡建立奧迪
Car byD=new BYD();//在這裡建立比亞迪 auDi.run();
byD.run(); //更多具體邏輯.....
}
}
簡單工廠模式測試:在上面抽象產品角色和具體產品角色的前提下增加,工廠類角色。
(3)工廠類
public class CarFactory{//建立者
//在這創造奧迪
public static Car CreateAoDi(){
return new AuDi();//返回具體的產品角色給ClientSimpleFactory
}
//在這比創造亞迪
public static Car CreateBYD(){
return new BYD();//返回具體的產品角色給ClientSimpleFactory
}
}
測試: public class ClientSimpleFactory {//測試客戶端
//呼叫者
public static void main(String[] args) {
Car aoDi= CarFactory.CreateAoDi();
Car byD=CarFactory.CreateBYD();
//車跑
aoDi.run();
byD.run();
//更多具體邏輯......
}
}