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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

抽象工厂模式(C#)

發布時間:2025/3/14 C# 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 抽象工厂模式(C#) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不理解抽象工廠模式是無法徹底明白 Petshop 的,聽起來好像名詞比較多,不好理解...其實就像一層窗戶紙一樣!

有兩點需要注意一下:
1. 必須明白接口的概念及使用方法
2. IFruit MyFruit = (IFruit)Assembly.Load(path).CreateInstance(sTypeName);
??? 這一句包含的內容比較多,但是理解了其實也沒什么的;
??? 首先是使用接口聲明對象,Assembly 是反射方式加載對象,path 為應用程序的“程序集名稱”,sTypeName 為完整的類名
??? 比方說下面的代碼中,程序集的名稱在項目屬性中指定(我這里使用的和命名空間名稱一樣),而完整類名就更好理解了!

使用方法:

Code
????protected?void?Button1_Click(object?sender,?EventArgs?e)
????{
????????Label?lb?
=?new?Label();
????????
string?FruitName?=?TextBox1.Text.Trim();
????????
this.form1.Controls.Add(lb);

????????
//聲明工廠對象
????????FruitFactory?MyFruitFactory?=?new?FruitFactory();

????????
//以接口方式聲明對象(可以實例化為此接口的任何一個對象)
????????IFruit?MyFruit?=?MyFruitFactory.MakeFruit(FruitName);

????????
//調用對象內的方法
????????lb.Text?=?MyFruit.PostName();
????}

?

工廠定義如下:

Code
using?System.Reflection;

namespace?vopt.DAL
{
????
///?<summary>
????
///?抽象接口定義
????
///?</summary>
????public?interface?IFruit
????{
????????
string?PostName();//返回類名
????}

????
///?<summary>
????
///?實例類型一
????
///?</summary>
????public?class?Orange?:?IFruit
????{
????????
public?string?PostName()
????????{
????????????
return?this.ToString();//返回類名
????????}
????}

????
///?<summary>
????
///?實例類型二
????
///?</summary>
????public?class?Apple?:?IFruit
????{
????????
public?string?PostName()
????????{
????????????
return?this.ToString();//返回類名
????????}

????}

????
///?<summary>
????
///?抽象工廠定義
????
///?</summary>
????public?class?FruitFactory
????{
????????
public?IFruit?MakeFruit(string?className)
????????{
????????????
//程序集名稱
????????????string?path?=?"vopt.DAL";

????????????
//完整的類名,vopt.DAL.Apple/Orange
????????????string?sTypeName?=?path?+?"."?+?className;

????????????
//利用反射加載對象
????????????IFruit?MyFruit?=?(IFruit)Assembly.Load(path).CreateInstance(sTypeName);

????????????
return?MyFruit;
????????}
????}
}

轉載于:https://www.cnblogs.com/jarod99/archive/2009/01/20/1378935.html

總結

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

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