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

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

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

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

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

設計模式學習筆記

——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然后實現一個靜態方法,通過參數來控制生成哪個工作。看似簡單工廠也能完成任務,但是如果以后需要加上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
国产精品视频网站| 欧美日韩国产色| 国产成人一区二| 丝袜美腿亚洲一区二区| 一本一道久久a久久精品逆3p| 亚洲大尺度美女在线| 国产精品草莓在线免费观看| 欧美性猛交xxxx免费看久久久| 欧美国产日产韩国视频| 久久久久久久久久久亚洲| 992tv成人免费影院| 国产日韩换脸av一区在线观看| 亚洲国产一区二区三区四区| 亚洲综合中文字幕68页| 国产伦精品一区二区三区精品视频| 成人网欧美在线视频| 欧美另类暴力丝袜| 国产98色在线| 国产精品第2页| 亚洲成人黄色网| 亚洲xxxx18| 亚洲3p在线观看| 国产日韩欧美中文| 亚洲片国产一区一级在线观看| 欧美激情视频网站| 色妞欧美日韩在线| 日韩精品免费在线视频观看| 日韩在线播放av| 国产z一区二区三区| 日韩欧美在线观看视频| 91网站免费观看| 亚洲韩国日本中文字幕| 欧美精品一本久久男人的天堂| 97香蕉超级碰碰久久免费的优势| 精品亚洲一区二区三区| 国产精品美女主播在线观看纯欲| 另类图片亚洲另类| 亚洲国产精品嫩草影院久久| 国产精品专区h在线观看| 91免费视频网站| 亚洲视频欧洲视频| 91免费人成网站在线观看18| 精品久久久久久久久久久久久久| 久久精品国产亚洲精品| 3344国产精品免费看| 97**国产露脸精品国产| 亚洲精品国产拍免费91在线| 亚洲欧美日韩中文视频| 九九热这里只有精品6| 精品久久久久久中文字幕大豆网| 91在线观看免费观看| 成人h视频在线观看播放| 午夜精品视频网站| 精品福利视频导航| 欧美日韩亚洲91| 国产精品久久久久久久久久东京| 影音先锋欧美精品| 欧美日韩美女在线| 亲爱的老师9免费观看全集电视剧| 狠狠色狠狠色综合日日五| 日韩色av导航| 欧美一级大片在线免费观看| 欧美精品一区二区免费| 国产亚洲在线播放| 欧美综合国产精品久久丁香| 国产精品一区av| 丝袜一区二区三区| 亚洲国产精品人人爽夜夜爽| 97热在线精品视频在线观看| 亚洲天堂男人天堂| 国产成人啪精品视频免费网| 4438全国成人免费| 亚洲精品www久久久久久广东| 91性高湖久久久久久久久_久久99| 久久久久久久久久国产| 欧美日韩国产在线| 亚洲精品97久久| 成人www视频在线观看| 国产成人激情小视频| 久久99久国产精品黄毛片入口| 欧美日本亚洲视频| 久久999免费视频| 最近日韩中文字幕中文| 国产精品视频久| 欧美在线一级va免费观看| 日韩视频在线观看免费| 全色精品综合影院| 欧美视频在线观看 亚洲欧| 久久91精品国产| 综合136福利视频在线| 91久久在线观看| 欧美激情按摩在线| 国产成人a亚洲精品| 成人在线观看视频网站| 国产精品日韩在线播放| 久久久精品欧美| 欧美一级电影免费在线观看| 久久成人国产精品| 国产自产女人91一区在线观看| 国产自产女人91一区在线观看| 91在线视频导航| 伊人精品在线观看| 亚洲xxxx3d| 91精品久久久久久久久久久| 亚洲网站在线看| 17婷婷久久www| 国产成人一区二| 最近2019中文字幕在线高清| 欧美裸体视频网站| 韩剧1988免费观看全集| 精品网站999www| 川上优av一区二区线观看| 国产精品十八以下禁看| 精品国产成人av| 国产成人精品999| 欧美日本高清视频| 欧美大成色www永久网站婷| 黑人巨大精品欧美一区二区三区| 国产69精品久久久久99| 国产成人极品视频| 久久久精品在线观看| 亚洲娇小xxxx欧美娇小| 米奇精品一区二区三区在线观看| 日韩欧美在线免费| 日韩欧美主播在线| 91精品国产乱码久久久久久蜜臀| 欧美一级bbbbb性bbbb喷潮片| 国产精品高清免费在线观看| 中文字幕免费精品一区高清| 中文字幕欧美亚洲| 亚洲精品美女在线观看播放| 亚洲性无码av在线| 久久躁狠狠躁夜夜爽| 国产伦精品一区二区三区精品视频| 91香蕉嫩草神马影院在线观看| 欧美日本高清视频| 在线观看日韩www视频免费| 欧美日本在线视频中文字字幕| 日韩欧美亚洲范冰冰与中字| 91精品国产91久久久久久不卡| 精品电影在线观看| 中文字幕不卡av| 欧美高清在线播放| 尤物99国产成人精品视频| 亚洲精品之草原avav久久| 欧美成人精品激情在线观看| 尤物yw午夜国产精品视频| 久久精品视频在线观看| 国产精品日韩欧美大师| 欧美大片在线免费观看| 色噜噜狠狠色综合网图区| 国产精品久久久久久久久久三级| 国模私拍一区二区三区| 亚洲在线观看视频| 国产精品成人免费视频| 久久精品国产69国产精品亚洲| www.亚洲人.com| 精品国产一区二区三区四区在线观看| 亚洲国产精品人久久电影| 日韩av最新在线观看| 成人网中文字幕| 69av成年福利视频| 日韩欧美中文字幕在线播放| 中文字幕亚洲欧美日韩2019|