日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式之工厂模式和抽象工厂

發布時間:2025/5/22 asp.net 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式之工厂模式和抽象工厂 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

設計模式分類

通常來說設計模式分為三大類:

  • 創建型模式,共 5 種:工廠模式、抽象工廠模式、單例模式、建造者模式、原型模式。
  • 結構型模式,共 7 種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
  • 行為型模式,共 11 種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。

下面用圖片來整體描述一下設計模式之間的關系:

工廠模式

工廠模式(Factory Pattern)的意義就跟它的名字一樣,在面向對象程序設計中,工廠通常是一個用來創建其他對象的對象。工廠模式根據不同的參數來實現不同的分配方案和創建對象。

在工廠模式中,我們在創建對象時不會對客戶端暴露創建邏輯,并且是通過使用一個共同的接口來指向新創建的對象。例如用工廠來創建 人 這個對象,如果我們需要一個男人對象,工廠就會為我們創建一個男人;如果我們需要一個女人,工廠就會為我們生產一個女人。

工廠模式通常分為:

  • 普通工廠模式
  • 多個工廠方法模式
  • 靜態工廠方法模式

普通工廠模式

剛剛我們說到,用工廠模式來創建人。先創建一個男人,他每天都“吃飯、睡覺、打豆豆”,然后我們再創建一個女人,她每天也“吃飯、睡覺、打豆豆”。

我們以普通工廠模式為例,在 project 目錄下新建一個FactoryTest.java。

示例代碼如下(下面的代碼塊中是全部的代碼,實際操作中應當按注釋創建相應的類再將方法寫入對應的類中):

// 二者共同的接口 interface Human{public void eat();public void sleep();public void beat(); }// 創建實現類 Male class Male implements Human{public void eat(){System.out.println("Male can eat.");}public void sleep(){System.out.println("Male can sleep.");}public void beat(){System.out.println("Male can beat.");} } //創建實現類 Female class Female implements Human{public void eat(){System.out.println("Female can eat.");}public void sleep(){System.out.println("Female can sleep.");}public void beat(){System.out.println("Female can beat.");} }// 創建普通工廠類 class HumanFactory{public Human createHuman(String gender){if( gender.equals("male") ){return new Male();}else if( gender.equals("female")){return new Female();}else {System.out.println("請輸入正確的類型!");return null;}} }// 工廠測試類 public class FactoryTest {public static void main(String[] args){HumanFactory factory = new HumanFactory();Human male = factory.createHuman("male");male.eat();male.sleep();male.beat();} }

打開 terminal,輸入命令編譯并運行:

javac FactoryTest.java java FactoryTest

普通工廠模式就是上面那樣子了,那么多個工廠方法模式又有什么不同呢?在普通工廠方法模式中,如果傳遞的字符串出錯,則不能正確創建對象。多個工廠方法模式是提供多個工廠方法,分別創建對象。

多個工廠方法模式

部分示例代碼,其他與上面普通工廠模式示例代碼一樣:

// 多個工廠方法 public class HumanFactory{public Male createMale() {return new Male();}public Female createFemale() {return new Female();} }// 工廠測試類 public class FactoryTest {public static void main(String[] args){HumanFactory factory = new HumanFactory();Human male = factory.createMale();male.eat();male.sleep();male.beat();} }

運行結果與普通工廠模式的示例一樣。

靜態工廠方法模式

將上面的多個工廠方法模式里的方法置為靜態的,不需要創建實例,直接調用即可。

部分示例代碼:

// 多個工廠方法 public class HumanFactory{public static Male createMale() {return new Male();}public static Female createFemale() {return new Female();} }// 工廠測試類 public class FactoryTest {public static void main(String[] args){Human male = HumanFactory.createMale();male.eat();male.sleep();male.beat();} }

總結:凡是出現了大量的產品需要創建,并且具有共同的接口時,可以通過工廠方法模式進行創建。在以上的三種模式中,第一種如果傳入的字符串有誤,不能正確創建對象,第三種相對于第二種,不需要實例化工廠類,所以,大多數情況下,我們會選用第三種——靜態工廠方法模式。

抽象工廠

抽象工廠模式(Abstract Factory Pattern)是一種軟件開發設計模式。抽象工廠模式提供了一種方式,可以將一組具有同一主題的單獨的工廠封裝起來。如果比較抽象工廠模式和工廠模式,我們不難發現前者只是在工廠模式之上增加了一層抽象的概念。抽象工廠是一個父類工廠,可以創建其它工廠類。所以我們也叫它 “工廠的工廠”。

“女媧娘娘”只有一個,而我們的工廠卻可以有多個,因此在這里用作例子就不合適了。作為“女媧娘娘”生產出來的男人女人們,那就讓我們來當一次吃貨吧。(吃的東西總可以任性多來一點)

現在,假設我們有 A、B 兩個廚房。每個廚房擁有的餐具和食品都不一樣,但是用戶搭配使用的方式,比如刀子和蘋果、杯子和牛奶等等,我們假設是一致的。

抽象工廠模式特別適合于這樣的一種產品結構:產品分為幾個系列,在每個系列中,產品的布局都是類似的,在一個系列中某個位置的產品,在另一個系列中一定有一個對應的產品。這樣的產品結構是存在的,這幾個系列中同一位置的產品可能是互斥的,它們是針對不同客戶的解決方案,每個客戶都只選擇其一。

工廠方法模式、抽象工廠模式,傻傻分不清楚。

為了解釋得更清楚,先介紹兩個概念:

  • 產品等級結構:比如一個抽象類是食物,其子類有蘋果、牛奶等等,則抽象食物與具體食物名稱之間構成了一個產品等級結構。食物是抽象的父類,而具體的食物名稱是其子類。
  • 產品族:在抽象工廠模式中,產品族是指由同一個工廠生產的,位于不同產品等級結構中的一組產品。如 AKitchen 生產的蘋果、刀子,蘋果屬于食物產品等級結構中,而刀子則屬于餐具產品等級結構中。而 BKitchen 可能生成另一組產品,如牛奶、杯子。

因此工廠方法模式、抽象工廠模式最大的區別在于:

工廠方法模式:針對的是 一個產品等級結構

抽象工廠模式:針對 多個產品等級結構

總結

以上是生活随笔為你收集整理的设计模式之工厂模式和抽象工厂的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲欧洲国产精品 | 日韩不卡毛片 | 日韩精品一区二区三区 | 亚洲av中文无码乱人伦在线观看 | 久久久久久久国产精品 | √8天堂资源地址中文在线 欧美精品在线一区二区 | 肉色丝袜小早川怜子av | 色天天av | 一区二区三区啪啪啪 | 国产又大又黄的视频 | 精品在线观看免费 | 射在线| 亚洲精品综合久久 | av制服丝袜在线 | 五月少妇 | 美女三级黄色片 | a三级黄色片 | 依人综合| 亚洲成人视屏 | 毛片av免费 | 天天干,天天操,天天射 | 国产在线看黄 | 久久久久久亚洲精品中文字幕 | 91香蕉视频在线 | 老妇女性较大毛片 | 青青草香蕉 | 欧美色图13p| 日韩免费视频观看 | 小箩莉末发育娇小性色xxxx | 特级特黄刘亦菲aaa级 | 久久久久久久久久一区 | 特级黄色录像 | 一二区视频 | 日韩激情视频 | 成人国产精品久久久 | 国产精品高清在线 | 15p亚洲| 亚洲少妇激情 | 国产精品探花一区二区在线观看 | 久久99久久98精品免观看软件 | 午夜剧场在线 | 国产成人无码网站 | 肥熟女一区二区三肥熟女 | 狠狠做深爱婷婷久久综合一区 | 1000亚洲裸体人体 | 国产视频第二页 | 国产91九色| 精品国产99一区二区乱码综合 | 亚洲av中文无码乱人伦在线视色 | 亚洲婷婷久久综合 | 97爱爱视频| 天堂av网在线 | 制服av网| 老色批影视 | 韩国三级国产 | 色妹av | 国产香蕉尹人视频在线 | 狠狠人妻久久久久久综合麻豆 | www国产在线观看 | 国产一区二区三区在线 | 日本国产精品一区 | 婷婷综合网 | 爆操av | 中文字幕第九页 | 色女人在线 | 麻豆av网| 亚州中文字幕 | 在线观看免费视频国产 | 在线理论视频 | 在线观看国产91 | 美女日批网站 | 国产美女精品在线 | 日本爽爽爽爽爽爽在线观看免 | 超碰免费成人 | 国产999精品久久久久久 | 一区二区午夜 | 日本一级免费视频 | 另类视频在线观看+1080p | 在线观看国产精品入口男同 | 亚洲aa在线 | 亚洲色网址 | 91麻豆国产视频 | 欧美激情一区二区三区在线 | 97超碰碰碰 | 成人av电影免费观看 | 自拍偷拍激情视频 | 青青草精品在线 | 99这里都是精品 | 免费在线视频你懂的 | 日本一区二区三区四区在线观看 | 欧美激情亚洲激情 | 亚洲一区二区高清 | 国产人人插 | 成人激情小说网站 | 欧美性视频在线 | 国产女人和拘做受视频免费 | 校园春色综合网 | 天堂中文在线免费观看 | 久久男人天堂 |