一,結構圖
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
工廠類角色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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

