一,結構圖
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
工廠類角色Creator (LightSimpleFactory):
工廠類在客戶端的直接控制下(Create方法)創建產品對象。
抽象產品角色Product (Light):
定義簡單工廠創建的對象的父類或它們共同擁有的接口。可以是一個類、抽象類或接口。
具體產品角色ConcreteProduct (BulbLight, TubeLight):
定義工廠具體加工出的對象。
二,示例代碼
public interface Light { public void turnOn(); public void turnOff(); } public class BulbLight implements Light { public void turnOn() { System.out.printLn("Bulb Light is Turned on"); } public void turnOff() { System.out.printLn("Bulb Light is Turned off"); } } public class TubeLight implements Light { public void turnOn() { System.out.printLn("Tube Light is Turned on"); } public void turnOff() { System.out.printLn("Tube Light is Turned off"); } } public class LightSimpleFactory { public Light Create(string lightType) { if(lightType == "Bulb") return new BulbLight(); else if(lightType == "Tube") return new TubeLight(); else return null; } }
三,演化
??????在有些情況下Simple Factory可以由抽象產品角色扮演,一個抽象產品類同時是子類的工廠。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
public abstract class Light { public abstract void TurnOn(); public abstract void TurnOff(); public static Light create(string lightType) { if(lightType == "Bulb") return new BulbLight(); else if(lightType == "Tube") return new TubeLight(); else return null; } } public class BulbLight extends Light { public void turnOn() { System.out.printLn("Bulb Light is Turned on"); } public void turnOff() { System.out.printLn("Bulb Light is Turned off"); } } public class TubeLight extends Light { public void turnOn() { System.out.printLn("Tube Light is Turned on"); } public void TurnOff() { System.out.printLn("Tube Light is Turned off"); } }
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
