工廠模式大致可以分為三類,1)簡單工廠模式,2)工廠方法模式,3)抽象工廠模式,下面逐一進行介紹:
簡單工廠:
產品:
public abstract class product
}public class itema extends product
}public class itemb extends product
}
工廠:
public class factory
return null;
}}
消費:
public class customer
}
消費的時候根據傳入的條件不同,建立出不同的product;缺點很明顯,工廠和商品耦合嚴重,新增新的商品時需要對方法進行修改;
工廠方法模式:
產品類不做改變,將工廠抽象成介面,並分別建立工廠的實現;
public inte***ce factory
public class factoryitema implements factory }
public class factoryitemb implements factory
}
同時,工廠的建立也要稍作改變:
public class customer
}
不同的產品要由不同的工廠生產,將介面inte***ce factory比作葡萄酒廠,則itema為幹白葡萄酒,itemb為乾紅葡萄酒,生產葡萄酒的工序差不多是一樣的,但是工序中的實現方法不盡相同,所以factoryitema為幹白葡萄酒廠,factoryitemb為乾紅葡萄酒廠;工廠方法模式的好處是顯而易見的,假設現在有乙個新的產品,冰酒,只需要新建立乙個工廠類即可,並不需要對現有的工廠進行改造,缺點是,如果產品種類很多的話,需要建立大量的工廠物件,這是很消耗資源的;
抽象工廠模式:
我們根據葡萄酒的例子進行分析,葡萄酒分為乾紅和幹白,並且他們的包裝即酒瓶子也是不一樣的,現在工廠除了要生產就之外還要生產酒瓶子,使用抽象工廠模式進行建模:
首先是產品:
public inte***ce wine
public class dryredwine implements wine
}public class drywhite implements wine
}public inte***ce bottle
public class bottleforred implements bottle
}public class bottleforwhite implements bottle
}
然後是工廠:
public inte***ce factory
public class factoryforred implements factory
@override
public bottle createbottle() }
public class factoryforwhite implements factory
@override
public bottle createbottle()
}
最後是消費類:
public class customer
}
可以看到抽象工廠模式中,乙個工廠可以生產多個產品,所以在使用過程中,工廠物件的建立數量會少一點兒,但是此時工廠類會變得比較重,比較佔記憶體,實際使用過程中要具體問題要具體分析; 設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...
c 設計模式 之 工廠模式之 工廠模式
1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...
設計模式 工廠模式之簡單工廠模式
定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...