到底有什麼可以讓6代程式設計師如此心動
阿新 • • 發佈:2020-10-23
模式定義
工廠方法模式:又稱為靜態工廠模式,也叫做虛擬構造器模式和多型工廠模式,他屬於類創造模式。在工廠模式中。工廠父類負責定義建立產品物件的公共介面,而工廠子類負責生成具體產品物件。
模式結構
模式分析
工廠模式是簡單工廠模式的進一步抽象和推廣。在工廠方法模式中,核心的工廠類不再負責所有具體產品的建立,而是將生成具體產品類交給子工廠類完成。工廠類和產品類具有平行的等級結構,往往一一對應。
優點:
(1)使用者只需關心產品類對應的工廠類,無需關心具體建立細節。
(2)可以由工廠自主確定建立何種產品物件,而如何建立物件的細節完全封裝在內部。
(3)系統加入新產品無需修改工廠及介面,而只要新增一個實體類和一個實體類的工廠即可。
缺點:
(1)在新增新的產品時,會建立新的實體類和工廠類,在一定程度上增加了系統複雜性,在編譯和執行帶來了額外開銷。
(2)會增加系統的類數,在一定程度上增加了系統的複雜度和理解難度
(3)系統擴充套件困難,不利於系統的擴充套件和維護。
電視案例
TV介面類
package com.zck.factoryfunction; public interface TV { public void play(); }
HaierTV類
package com.zck.factoryfunction; public class HaierTV implements TV {public void play() { System.out.print("海爾電視正在播放\n"); } }
HisenseTV類
package com.zck.factoryfunction; public class HisenseTV implements TV { public void play() { System.out.print("海信電視正在播放\n"); } }
factory介面類
package com.zck.factoryfunction; public interface TVFactory {public TV produceTV(); }
HaierTVFaction類
package com.zck.factoryfunction; public class HaierTVFactory implements TVFactory { public TV produceTV() { return new HaierTV(); } }
HisenseTVFActory類
package com.zck.factoryfunction; public class HisenseTVFactory implements TVFactory { public TV produceTV() { return new HisenseTV(); } }
Client類
package com.zck.factoryfunction; public class Client { public static void main(String[] args) { TV tv1,tv2; TVFactory tvFactory1 = new HaierTVFactory() ; TVFactory tvFactory2 = new HisenseTVFactory() ; tv1 = tvFactory1.produceTV(); tv1.play(); tv2 = tvFactory2.produceTV(); tv2.play(); } }
測試結果