一、應用場景
工廠模式應用非常廣泛,意在抽象出一層專職管理物件產生以及物件間的關係,讓我們能夠專注於業務開發:
1. 不用去寫許許多多的new方法,替換實現類還得挨個修改。2. 類中不涉及實現類,物件間只存在介面級別的耦合,客戶端呼叫注入實現類即可。
由於工廠模式變種非常多,這裡只講一下常用的簡單工廠和抽象工廠。二、原始碼分析
1. 簡單工廠public inte***ce iproduct
public class concreteproducta implements iproduct
}
簡單工廠單以工廠類來區別不同類別的例項,也就是乙個工廠中的乙個方法只能生產一類例項:這裡就只能建立iproduct介面的實現類,如果要建立ikeyboard介面實現就得新建立乙個工廠,或者是在該工廠中新增專門建立該類別例項的方法。當然,新增方法邏輯不夠清晰。此外,客戶端需要提供實現類的class物件或者全路徑。public class productfactory
public static t getinstance(classcls) catch (instantiationexception e) catch (illegalacces***ception e)
return product;
}}
2. 抽象工廠
這裡以a、b公司各有a、b兩類產品舉例,產品實現類就有2*2=4種,這裡就寫出一種產品其餘大家自行腦補。
產品:
public inte***ce iproduct
public abstract class abstractproducta implements iproduct
}
public abstract class abstractproductb implements iproduct
}
工廠:public class paofcompanya extends abstractproducta
}
public inte***ce ifactory
public class companyafactory implements ifactory
@override
public iproduct createproductb()
}
抽象工廠以工廠和方法各為乙個維度來區分不同的類別,通過指定工廠和建立方法來產生對應實現類的例項,無需提供實現類資訊。public class companybfactory implements ifactory
@override
public iproduct createproductb()
}
可以看出,抽象工廠與簡單工廠的區別在於:
1.抽象工廠乙個方法建立乙個實現類物件,而非一類物件。
2.抽象工廠處理維度更高的物件關係,擴充套件要麼增加工廠類別,要麼增加建立方法。
3.抽象工廠可以用簡單工廠實現,比如上面的例子用簡單工廠建立iproduct類別即可。
抽象工廠模式 設計模式3之抽象工廠模式
工廠方法模式中工廠只負責同類產品的生產。比如電視機工廠不應該生產汽車。然而現實生活中有很多綜合型的工廠,比如有些電視工廠不僅生產電視機,還會生產與之配套的機頂盒。那麼抽象工廠模式隨之誕生,這種模式將考慮多種型別產品的生產。我們總結下 工廠方法模式只考慮成產同一等級級的產品抽象方法模式考慮生產多等級的...
設計模式4 3 工廠模式之抽象工廠
在我們的示例中,materialfactory是抽象工廠的抽象類,它定義了建立water和rawnoodles這兩個同屬乙個家族的物件的方法。在具體的工廠類中,每乙個物件的建立都使用工廠方法的方式建立。抽象工廠類和具體工廠類 abstract class materialfactory class ...
設計模式之工廠模式(簡單工廠 工廠模式 抽象工廠)
參考博文 侵權必刪 什麼是工廠模式 通過 物件建立 模式繞開new,來避免物件建立 new 過程中所導致的緊耦合 依賴具體類 適用性 使用new建立物件且導致緊耦合的場景。思考 物件導向程式設計要以動態的思維去看待 換句話說,在看 時需要時間概念,發現 在未來的穩定之處和變化之處。一般介面和抽象類是...