工廠方法模式 簡單工廠類 簡單工廠模式屬於創建型模式,又稱靜態工廠方法(Static factory method)模式。其是由一個工廠對象決定創建出哪一種產品類的實例,可理解為不同工廠模式的一個特殊實現。 上述代碼對於修改開放了,違反了開放封閉原則。故而引出工廠方法模式,去解決這樣的矛盾。 GOF ...
工廠方法模式
簡單工廠類
簡單工廠模式屬於創建型模式,又稱靜態工廠方法(Static factory method)模式。其是由一個工廠對象決定創建出哪一種產品類的實例,可理解為不同工廠模式的一個特殊實現。
public class BreadFactory {
public static BreadMaker MakeBread(int breadType) {
BreadMaker breadMaker = null;
switch(breadType)
{
case1 :
breadMaker = new BlackBread();
case2 :
breadMaker = new HoneyBread();
........
}
return breadMaker;
}
}
上述代碼對於修改開放了,違反了開放封閉原則。故而引出工廠方法模式,去解決這樣的矛盾。
GOF對於工廠方法模式的定義是:“定義一個用於創建對象的介面,讓子類決定實例化哪一個類,工廠方法使得一個類的實例化被延遲到其子類。”
具體實現代碼如下
public class BreadMaker
{
public void GetBread()
{
}
}
public class BlackBread extends BreadMaker{
@override
public void GetBread()
{
"黑麵包"
}
}
public class HoneyBread extends BreadMaker{
@override
public void GetBread()
{
"蜂蜜麵包"
}
}
public class WhiteBread extends BreadMaker{
@override
public void GetBread()
{
"白麵包"
}
}
public interface IFactory{
BreadMaker CreateBread();
}
public class BlackBreadFactory implements IFactory
{
@override
public BreadMaker CreateBread()
{
return new BlackBread();
}
}
public class HoneyBreadFactory implements IFactory
{
@override
public BreadMaker CreateBread()
{
return new HoneyBread();
}
}
public class WhiteBreadFactory implements IFactory
{
@override
public BreadMaker CreateBread()
{
return new WhiteBread();
}
}
工廠模式適用的地方:
- 當一個類不知道他所必須創建的對象的類是,比如要創建一個白麵包的對象,但是並不知道他的類是whitebread
- 當一個類希望由它的子類來指定它所創建的對象時
- 當類將創建對象的職責委托給多個幫助子類中的某一個,並且希望將哪一個幫助子類是代理者這一信息局部化的時候