需要高度靈活性,簡單擴展子類別.
例如:
有多個地區生產各種水果,盤商只須對供應商下訂單,不須了解供應商接單後,水果從哪個地區出貨!但重點是皆能取得下訂商品!
使用方式:
class FactoryPattern以上面的例子來說:
{
interface IProduct {
string ShipFrom( );
}
class ProductA : IProduct
{
public String ShipFrom ( ) {
return " from South Africa";
}
}
class ProductB : IProduct
{
public String ShipFrom ( ) {
return "from Spain";
}
}
class DefaultProduct : IProduct
{
public String ShipFrom ( ) {
return "not available";
}
}
class Creator
{
public IProduct FactoryMethod(int month)
{
if (month >= 4 && month <=11)
return new ProductA( );
else
{
if (month == 1 || month == 2 || month == 12)return new ProductB( );
}
else return new DefaultProduct( );
}
}
IProduct 介面是出貨地區,ProductA,ProductB都會出貨,而從哪出貨是由Creator 類別由月份決定以彈性出貨,使用者下訂單時,只需對Creator 類別下單即可
Creator c = new Creator( );參考書籍c#3.0 design pattern
IProduct product;
product = c.FactoryMethod(i);
product.ShipFrom();
沒有留言:
張貼留言