亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

設計模式——工廠模式(Factory)

2019-11-10 20:47:48
字體:
來源:轉載
供稿:網友

要想正確理解設計模式,首先必須明確它是為了解決什么問題而提出來的。

設計模式學習筆記

——Shulin

轉載請注明出處:http://blog.csdn.net/zhshulin

1、概念

           工廠模式定義:實例化對象,用工廠方法代替new操作。達到解耦的目的(避免硬編碼耦合)。工廠方法模式是類的創建模式,又叫做虛擬構造子(Virtual Constructor)模式或者多態性工廠(Polymorphic Factory)模式。

        工廠模式是我們最常用的模式了,著名的Jive論壇 ,就大量使用了工廠模式,工廠模式在java程序系統可以說是隨處可見。因為工廠模式就相當于創建實例對象的new,我們經常要根據類Class生成實例對象,如A a=new A() 工廠模式也是用來創建實例對象的,所以以后new時就要多個心眼,是否可以考慮使用工廠模式,雖然這樣做,可能多做一些工作,但會給你系統帶來更大的可擴展性和盡量少的修改量。

       常用的java ee框架:sPRing,Spring容器就是一個巨大的工廠。

2、目的

       解耦,使程序的擴展性更強。

3、舉例說明

        比如現在有2個工作AWork和BWork,以后可能更多。如果此時我們使用簡單工廠方法,那么我們會設計一個WorkFactory然后實現一個靜態方法,通過參數來控制生成哪個工作???#20284;簡單工廠也能完成任務,但是如果以后需要加上CWork,那么需要添加CWork實現類以及修改工廠方法,如果更多,那么會導致工廠類過于臃腫。因為簡單工廠模式只有一個工廠類,它需要處理所有的創建的邏輯。

 

        這時候就需要工廠方法模式來處理以上需求。在工廠方法模式中,核心的工廠類不再負責所有的對象的創建,而是將具體創建的工作交給子類去做。這個核心類則搖身一變,成為了一個抽象工廠角色,僅負責給出具體工廠子類必須實現的接口,而不接觸哪一個類應當被實例化這種細節。

 

        這種進一步抽象化的結果,使這種工廠方法模式可以用來允許系統在不修改具體工廠角色的情況下引進新的產品,這一特點無疑使得工廠方法模式具有超過簡單工廠模式的優越性。下面就針對以上需求設計UML圖:

從上圖可以看出,這個使用的工廠方法模式的系統涉及到以下角色:

 

  抽象工廠(IWorkFactory)角色:擔任這個角色的是工廠方法模式的核心,任何在模式中創建對象的工廠類必須實現這個接口。在實際的系統中,這個角色也常常使用抽象類實現。

 

  具體工廠(AWorkFactory、BWorkFactory)角色:擔任這個角色的是實現了抽象工廠接口的具體JAVA類。具體工廠角色含有與業務密切相關的邏輯,并且受到使用者的調用以創建工作類。

 

  抽象工作(IWork)角色:工廠方法模式所創建的對象的超類,也就是所有工作類的共同父類或共同擁有的接口。在實際的系統中,這個角色也常常使用抽象類實現。

 

  具體工作(AWork和BWork)角色:這個角色實現了抽象(ExportFile)角色所聲明的接口,工廠方法模式所創建的每一個對象都是某個具體工作角色的實例。

4、源代碼

抽象工作類:

[java] view plain copy print?public interface IWork {      public void doWork();  }  具體工作類:

[java] view plain copy print?public class AWork implements IWork {      @Override      public void doWork() {          System.out.println("做的是A工作!");      }  }  [java] view plain copy print?public class BWork implements IWork {      @Override      public void doWork() {          System.out.println("做的是B工作!");      }  }  

抽象工廠:

[java] view plain copy print?public interface IWorkFactory {      public IWork createWork();  }  具體工廠:[java] view plain copy print?public class AWorkFactory implements IWorkFactory {        @Override      public IWork createWork() {          return new AWork();      }    }  [java] view plain copy print?public class BWorkFactory implements IWorkFactory {        @Override      public IWork createWork() {          return new BWork();      }    }  

客戶端角色類源代碼:

[java] view plain copy print?public class Test {        public static void main(String[] args) {          IWorkFactory aWorkFactory = new AWorkFactory();          IWork aWork = aWorkFactory.createWork();          aWork.doWork();                    IWorkFactory bWorkFactory = new BWorkFactory();          IWork bWork = bWorkFactory.createWork();          bWork.doWork();      }    }  

5、工廠模式和簡單工廠模式

          工廠方法模式和簡單工廠模式在結構上的不同很明顯。工廠方法模式的核心是一個抽象工廠類,而簡單工廠模式把核心放在一個具體類上。

  工廠方法模式退化后可以變得很像簡單工廠模式。設想如果非常確定一個系統只需要一個具體工廠類,那么不妨把抽象工廠類合并到具體工廠類中去。由于只有一個具體工廠類,所以不妨將工廠方法改為靜態方法,這時候就得到了簡單工廠模式。

 

  如果系統需要加入一個新的工作CWork,那么所需要的就是向系統中加入一個這個導類以及所對應的工廠類。沒有必要修改客戶端,也沒有必要修改抽象工廠角色或者其他已有的具體工廠角色。對于增加新的導出類型而言,這個系統完全支持“開-閉原則”。

(原文地址:http://blog.csdn.net/zhshulin/article/details/38339085)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品免高潮费视频| 亚洲精品久久久久| 亚洲一区第一页| 亚洲男子天堂网| 精品福利一区二区| 日韩国产中文字幕| 国产精品一区二区av影院萌芽| 亚洲成人黄色在线观看| 高清日韩电视剧大全免费播放在线观看| 色综合久久天天综线观看| 欧美在线视频在线播放完整版免费观看| 97久久精品人人澡人人爽缅北| 永久免费看mv网站入口亚洲| 欧美黑人一区二区三区| 日韩av片永久免费网站| 日本精品视频在线| 国内揄拍国内精品少妇国语| 国产91在线播放精品91| 亚洲综合成人婷婷小说| 红桃视频成人在线观看| 久久五月天综合| 亚洲国产日韩欧美综合久久| 57pao成人国产永久免费| 亚洲字幕一区二区| 欧美性xxxxx| 亚洲欧美激情另类校园| 国产精品午夜国产小视频| 久久视频在线播放| 精品久久久久久久久久ntr影视| 日韩av手机在线| 大荫蒂欧美视频另类xxxx| 亚洲人成亚洲人成在线观看| 久久精品99无色码中文字幕| 在线观看欧美视频| 丝袜美腿亚洲一区二区| 色婷婷av一区二区三区在线观看| 精品动漫一区二区三区| 一色桃子一区二区| 91精品国产91久久久久久不卡| 欧美亚洲另类在线| 亚洲成人久久网| 一区二区欧美久久| 2021久久精品国产99国产精品| 午夜精品国产精品大乳美女| 91国内产香蕉| 美女黄色丝袜一区| 久久国产天堂福利天堂| 亚洲第一色在线| 国产精品户外野外| 亚洲激情视频在线播放| 日韩av影片在线观看| 久久久久亚洲精品| 亚洲自拍偷拍网址| 久久不射热爱视频精品| 亚洲综合小说区| 57pao国产精品一区| 亚洲天堂2020| 久久久久久亚洲精品| 久久激情五月丁香伊人| 欧美极品少妇xxxxⅹ裸体艺术| 欧美最猛性xxxxx免费| 亚洲a成v人在线观看| 国产91精品久久久| 欧美性视频在线| 18一19gay欧美视频网站| 久久精品成人动漫| 91久久精品国产91久久性色| 久久久av电影| 国产精品电影网站| www.亚洲人.com| 日韩视频精品在线| 亚洲精品日韩久久久| 欧美乱妇高清无乱码| 国产亚洲欧洲黄色| 韩国v欧美v日本v亚洲| 91精品国产乱码久久久久久久久| 亚洲男人天堂九九视频| 91av在线免费观看视频| 欧美激情一区二区久久久| 国产精品444| 超碰91人人草人人干| 久久久免费在线观看| 久久久久久噜噜噜久久久精品| 在线视频欧美性高潮| 91午夜理伦私人影院| 日韩中文字幕欧美| 国产成人精品综合久久久| 亚洲最大成人免费视频| 少妇av一区二区三区| 久久精品青青大伊人av| 2019日本中文字幕| 北条麻妃一区二区在线观看| 国产亚洲精品美女久久久久| 亚洲三级 欧美三级| 国产第一区电影| 亚洲精品720p| 亚洲情综合五月天| 欧美色视频日本版| 久久av.com| 久久婷婷国产麻豆91天堂| 国产精品成人播放| 中文字幕亚洲一区| 亚洲欧洲中文天堂| 精品久久香蕉国产线看观看gif| 2019中文在线观看| 国产精品成人在线| 久久久精品久久久久| www.欧美三级电影.com| 日韩精品视频观看| 成人激情视频免费在线| 97国产suv精品一区二区62| 国产成人精品在线观看| 日韩欧美主播在线| 2019最新中文字幕| 亚洲欧美日韩精品| 国产日韩在线看片| 自拍视频国产精品| 一区二区三区久久精品| 成人亚洲综合色就1024| 亚洲欧美制服另类日韩| 黄色一区二区在线观看| 亚洲欧美日韩中文在线制服| 日韩在线视频网| 韩国一区二区电影| 91精品久久久久久久久久| 亚洲免费一级电影| 欧美国产精品人人做人人爱| 日韩精品高清在线观看| 在线性视频日韩欧美| 亚洲伊人第一页| 亚洲美女精品久久| 国产ts一区二区| 亚洲午夜未满十八勿入免费观看全集| 国产精品网站视频| 欧美肥臀大乳一区二区免费视频| 色中色综合影院手机版在线观看| 亚洲成人aaa| 日韩av网站导航| 中文字幕少妇一区二区三区| 亚洲国产成人一区| 国产一区二区在线播放| 亚洲最大成人网色| 欧美电影在线观看高清| 亚洲免费人成在线视频观看| 一区二区三区在线播放欧美| 免费av在线一区| 久久久精品一区二区三区| 亚洲精品中文字幕女同| 亚洲欧美日韩国产中文专区| 成人日韩在线电影| 欧美黑人视频一区| 欧美日韩国产成人在线| 亚洲国产美女久久久久| 欧美成年人在线观看| 亚洲精品一区中文字幕乱码| 亚洲a级在线播放观看| 欧美精品一区二区免费| 成人高清视频观看www| 日韩在线一区二区三区免费视频| 国产精品成熟老女人| 91亚洲va在线va天堂va国| 中文日韩在线视频| 成人h片在线播放免费网站| 久久精品国产99国产精品澳门|