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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

设计模式C#描述——抽象工厂模式

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式C#描述——抽象工厂模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
設計模式C#描述——抽象工廠模式



閱讀此文應先閱讀簡單工廠模式與工廠方法模式

抽象工廠模式是對象的創建模式,它是工廠方法模式的進一步推廣。

假設一個子系統需要一些產品對象,而這些產品又屬于一個以上的產品等級結構。那么為了將消費這些產品對象的責任和創建這些產品對象的責任分開,可以引進抽象工廠模式。這樣的話,消費產品的客戶不需要直接參與產品的創建工作,而只需要向一個公用的工廠接口請求所需要的產品。



抽象工廠角色:擔任這個角色的是工廠方法模式的核心,它是與應用系統的商業邏輯無關的。通常使用接口或抽象類實現。

具體工廠角色:這個角色直接在客戶端的調用下創建產品的實例。這個角色含有選擇合適的產品對象的邏輯,而這個邏輯是與應用系統的商業邏輯緊密相關的。通常使用具體的類實現。

抽象產品角色:擔任這個角色的類是抽象工廠方法模式所創建的對象的父類,或它們共同擁有的接口。通常使用接口或抽象類實現這一角色。

具體產品角色:抽象工廠模式所創建的任何產品對象都是某一具體產品類的實例。這是客戶端最終需要的東西。通常使用具體類實現這個角色。

下面給出這個系統的原代碼:



Creator:

public interface Creator

{

ProductA factoryA();

ProductB factoryB();

}



ConcreteCreator1:

public class ConcreteCreator1:Creator

{

public ProductA factoryA()

{

return new ProductA1();

}

public ProductB factoryB()

{

return new ProductB1();

}

}



ConcreteCreator2:

public class ConcreteCreator2:Creator

{

public ProductA factoryA()

{

return new ProductA2();

}

public ProductB factoryB()

{

return new ProductB2();

}

}



ProductA:

public interface ProductA

{

}



ProductA1:

public class ProductA1:ProductA

{

public ProductA1()

{

}

}



ProductA2:

public class ProductA2:ProductA

{

public ProductA2()

{

}

}



ProductB:

public interface ProductB

{

}



ProductB1:

public class ProductB1:ProductB

{

public ProductB1()

{

}

}



ProductB2:

public class ProductB2:ProductB

{

public ProductB2()

{

}

}

在以下情況下應該使用抽象工廠模式:

一個系統不應當依賴于產品類實例如何被創建、組合和表達的細節,這對于所有形態的工廠模式都是重要的。

這個系統的產品有多于一個的產品族,而系統只消費其中某一族的產品。

同屬于同一個產品族的產品是在一起使用的,這一約束必須在系統的設計中體現出來。

系統提供一個產品類的庫,所有的產品以同樣的接口出現,從而使客戶端不依賴于實現。?
?

總結

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

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