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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

设计模式 工厂方法_使用工厂方法模式设计最佳实践

發布時間:2023/12/3 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式 工厂方法_使用工厂方法模式设计最佳实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

設計模式 工廠方法

在前面的“設計模式”示例中,我們解釋了當今常用的“工廠”模式。 在本節中,我們將了解具有更多抽象的更高級的解決方案。 該模式稱為工廠方法設計模式。

定義:
Factory方法模式提供了一種用于創建對象的方法,但是將對象創建委托給了子類。 工廠方法設計模式以類似于工廠模式的方式解決了這些問題,并附加了抽象級別。

可以使用new關鍵字實例化該對象。 例如,對象A使用以下方法創建另一個對象B:

ClassB objB = new ClassB();

因此,對象A擁有對對象B的引用。

對象實例化對象實例化

由于對象A現在依賴于對象B(如果后來對其進行了修改),那么我們將不得不重新編譯對象A。 對象的創建可能更加復雜,如果存在更多的耦合,那么維護將是軟件開發中一項痛苦而昂貴的工作。

為了避免這種最壞的情況,我們提供了新穎的設計模式來進行救援。 他們試圖在客戶端和對象創建者之間創建松散的耦合,并為開發者提供其他一些設計優勢。 Factory Method模式就是解決設計問題的一種模式。

常用:
工廠方法設計模式通常與裝飾器設計模式一起用于各種框架(例如Struts,Spring,Apache)中。 有許多基于此Factory模式的J2EE模式,例如DAO模式。

讓我們以服裝工廠為例,我們正在創建各種類型的服裝,但是客戶完全不知道這些產品是如何創建的。 即使我們必須添加新的服裝類型(例如夾克),也無需更改客戶端代碼,從而增加了應用程序的靈活性。

工廠模式類圖

何時使用工廠方法模式?

  • 對象的創建需要代碼的重用,而無需大量重復代碼。
  • 一個類將不知道需要創建哪些子類。
  • 子類可以指定應創建哪些對象。
  • 父類將把對象的創建委托給它的子類。

結構體

下圖突出顯示了工廠方法設計模式的典型結構。 與上述示例不同,已添加了一個附加的Factory Abstract(Factory)類。

工廠方法設計模式(UML)

在上圖中,以下是參與者:

  • 產品:這為工廠方法創建的對象定義了一個接口。
  • 具體產品:實現產品接口。
  • 工廠(創建者):這是一個抽象類,定義了返回產品對象的工廠方法。
  • 具體工廠:此類實現并覆蓋由父工廠類聲明的方法。

客戶(例如,對象類A)將要使用由ConcreteFactory類(對象類B)創建的產品。 但是,在這種情況下,客戶端僅持有對接口B的引用,而不是對象“類B”,因此它不需要了解有關類B的任何信息。 實際上,可以有多個類可以實現抽象類。

Factory Method模式允許子類決定實例化哪個類的含義是什么?
從根本上講,這意味著對工廠抽象類進行編碼,而無需知道將實例化哪些實際的ConcreteProduct類,即它是Trouser還是Shirt。 這完全由ConcreteFactory類確定。

現在,將上述模式實現到我們的GarmentFactory示例中。

工廠方法示例

讓我們開始吧。 我們不會重復在Factory Pattern文章中找到的具體產品的代碼,例如Shirt.java和Trouser.java。

已創建一個面向客戶的新Factory抽象類。

public abstract class Factory {protected abstract GarmentType createGarments(String selection);}

需要修改GarmentFactory類以繼承抽象類Factory。

public class GarmentFactory extends Factory{public GarmentType createGarments(String selection) {if (selection.equalsIgnoreCase('Trouser')) {return new Trouser();} else if (selection.equalsIgnoreCase('Shirt')) {return new Shirt();}throw new IllegalArgumentException('Selection doesnot exist');} }

客戶端類引用Factory類,并對Factory的createGarments(selection)方法進行分類,以在運行時創建產品。

Factory factory = new GarmentFactory(); GarmentType objGarmentType = factory.createGarments(selection); System.out.println(objGarmentType.print());


優點:

  • 通過將對象創建從客戶端代碼移到Factory類及其子類,代碼可以靈活,松耦合和可重用。 由于異議創建是集中的,因此維護此類代碼更加容易。
  • 客戶代碼僅處理產品接口,因此可以在不修改客戶代碼邏輯的情況下添加任何具體產品。
  • Factory Method的優點是它可以多次返回相同的實例,或者可以返回子類而不是該確切類型的對象。
  • 它通過工廠創建對象來鼓勵代碼的一致性,該工廠強制執行每個人都必須遵循的一組明確規則。 這樣可以避免在不同的客戶端使用不同的構造函數。


例:

JDBC是這種模式的一個很好的例子。 應用程序代碼不需要知道它將與哪個數據庫一起使用,因此它也不知道應使用哪個特定于數據庫的驅動程序類。 相反,它使用工廠方法來獲取Connections,Statement和其他對象。 這提供了更改后端數據庫的靈活性,而無需更改您的DAO層。
以下是SDK中的一些示例:
valueOf()方法,返回由工廠創建的對象,該對象與傳遞的參數值相等。 getInstance()方法,該方法創建Singleton類的實例。 newInstance()方法,該方法用于每次調用時從工廠方法創建和返回新實例。 下載示例代碼

參考: Idiotechie博客上來自JCG合作伙伴 Mainak Goswami的使用Factory Method Pattern設計最佳實踐 。

翻譯自: https://www.javacodegeeks.com/2012/10/design-best-practices-using-factory-method-pattern.html

設計模式 工廠方法

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的设计模式 工厂方法_使用工厂方法模式设计最佳实践的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 在线国产区 | 成人国产一区 | 国产夫妇交换聚会群4p | 中文免费av| 色网在线观看 | 日韩久操| 成人自拍视频在线 | 婷婷丁香社区 | 欧美一级片在线视频 | 天天夜夜人人 | 欧美乱人伦 | 国产一区二区三区播放 | 成人先锋av | 色淫湿视频 | 成人国产一区 | 欧美xxxx888 | 射婷婷| 国产精品日韩在线 | 国产精品jizz在线观看软件 | 深夜视频免费在线观看 | 三女同志亚洲人狂欢 | 激情亚洲 | 国产ts三人妖大战直男 | 日韩精品大片 | 女生和男生一起插插插 | 97欧美视频| 欧美男女视频 | 一本色综合 | 日本午夜小视频 | 老司机亚洲精品 | 苍井空张开腿实干12次 | 香蕉国产在线视频 | 国产农村妇女毛片精品久久麻豆 | 奴性女会所调教 | 久久久久久久久综合 | 免费男女视频 | 成人公开免费视频 | 国产精品一区二区麻豆 | 狠狠操在线视频 | 日本中文在线观看 | 成人看| 欧美日韩一级黄色片 | 成人在线视频一区二区 | 国产成人免费观看 | 免费男女乱淫真视频免费播放 | 亚洲欧美日韩一区二区三区在线观看 | xxxxx国产 | 亚洲三级伦理 | 国产av无码专区亚洲av毛网站 | 欧美美女性生活视频 | 国产在线免费视频 | 久久裸体视频 | 国产a级大片 | 国产白浆视频 | 中日韩精品视频在线观看 | 亚洲在线天堂 | www.999av| 禁网站在线观看免费视频 | 日本123区| 欧美高清在线视频 | 91超碰国产在线 | 嫩草av久久伊人妇女超级a | 日韩伦人妻无码 | 国产剧情一区 | 激情小说视频在线 | 吻胸摸激情床激烈视频大胸 | 免费国产视频 | 国产高清成人久久 | 一二三区中文字幕 | 丁香啪啪综合成人亚洲 | av夜色| 亚洲xx网 | 伦理久久 | 樱花视频在线观看 | 免费人成在线 | 朝桐光一区二区三区 | 婷婷深爱激情 | 色香蕉在线视频 | 九九九九精品九九九九 | 99久久夜色精品国产亚洲 | 国产免费一级视频 | 伊人久久久久噜噜噜亚洲熟女综合 | 欧美日韩在线播放视频 | 伊人久久九| 少妇高潮毛片色欲ava片 | 亚洲a网站 | 日本黄色视| 私人午夜影院 | 久久久久一 | 激情国产精品 | 国产一国产精品一级毛片 | 欧美在线观看www | 91久久亚洲| 黑人玩弄人妻一区二区绿帽子 | 91av麻豆| 在线观看涩涩视频 | 国产亚洲精品久久久久久无几年桃 | 欧美综合在线一区 | 亚欧成人精品一区二区 |