《研磨设计模式》chap6 工厂模式factory(2)案例实现
生活随笔
收集整理的這篇文章主要介紹了
《研磨设计模式》chap6 工厂模式factory(2)案例实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 用工廠模式實現(xiàn)案例
2. IoC/DI
IoC——InversionofControl, 控制反轉
DI——DependencyInjection, 依賴注入
優(yōu)化為:
public abstract class A1 {//工廠方法,創(chuàng)建C1,類似于從子類注入進來的途徑 protected abstract C1 createC1();public void t1(){//這里需要使用C1類,可是不知道究竟是用哪一個,也就不主動去創(chuàng)建C1了,怎么辦?//反正會在子類里面實現(xiàn),這樣更省心,這里不用管怎么獲取C1,直接使用就好了createC1().tc();} }public class A2 extends A1 {protected C1 createC1() {//真正的選擇具體實現(xiàn),并創(chuàng)建對象return new C2();} }3. 平行的類層次
4. 參數(shù)化工廠
依賴倒置原則告訴我們“要依賴抽象, 不要依賴于具體類”, 簡單點說就是: 不能讓高層組件依賴于低層組件, 而且不管高層組件還是低層組件, 都應該依賴于抽象。
eg. ExportOperate 提供type參數(shù),假設要新增加一個xml文件輸出類,增加type ==3.
public interface ExportFileApi {//導出內容成為文件 public boolean export(String data); }public class ExportDB implements ExportFileApi{public boolean export(String data) {//簡單示意一下,這里需要操作數(shù)據(jù)庫和文件System.out.println("導出數(shù)據(jù)"+data+"到數(shù)據(jù)庫備份文件");return true;} }public class ExportTxtFile implements ExportFileApi{public boolean export(String data) {//簡單示意一下,這里需要操作文件System.out.println("導出數(shù)據(jù)"+data+"到文本文件");return true;} }public class ExportXml implements ExportFileApi{public boolean export(String data) {//簡單示意一下System.out.println("導出數(shù)據(jù)"+data+"到XML文件");return true;} }public class ExportOperate {//導出文件 public boolean export(int type,String data){//使用工廠方法ExportFileApi api = factoryMethod(type);return api.export(data);}//工廠方法,創(chuàng)建導出的文件對象的接口對象 protected ExportFileApi factoryMethod(int type){ExportFileApi api = null;//根據(jù)類型來選擇究竟要創(chuàng)建哪一種導出文件對象if(type==1){api = new ExportTxtFile();}else if(type==2){api = new ExportDB();}return api;} }public class ExportOperate2 extends ExportOperate{//覆蓋父類的工廠方法,創(chuàng)建導出的文件對象的接口對象 protected ExportFileApi factoryMethod(int type){ExportFileApi api = null;//可以全部覆蓋,也可以選擇自己感興趣的覆蓋,//這里只想添加自己新的實現(xiàn),其他的不管if(type==3){api = new ExportXml();}else{//其他的還是讓父類來實現(xiàn)api = super.factoryMethod(type); }return api; } }public static void main(String[] args) { // //創(chuàng)建需要使用的Creator對象 // ExportOperate operate = new ExportOperate(); // //調用輸出數(shù)據(jù)的功能方法,傳入選擇到處類型的參數(shù) // operate.export(1,"測試數(shù)據(jù)");//創(chuàng)建需要使用的Creator對象ExportOperate operate = new ExportOperate2();//下面變換傳入的參數(shù)來測試參數(shù)化工廠方法operate.export(1,"Test1");operate.export(2,"Test2");operate.export(3,"Test3");}5. 總結
工廠方法模式的本質:延遲到子類來選擇實現(xiàn)。
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的《研磨设计模式》chap6 工厂模式factory(2)案例实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《研磨设计模式》chap6 工厂模式fa
- 下一篇: 《研磨设计模式》chap5 单例模式si