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

歡迎訪問 生活随笔!

生活随笔

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

C#

c#设计模式学习1之工厂模式

發布時間:2023/12/19 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#设计模式学习1之工厂模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

c#設計模式學習1之簡單工廠

???????? 進入程序員這個行業快一年了,寫的程序就那么多,一直感覺寫的程序沒有質的飛躍,看看高手人家的程序,感覺和自己寫的差的很大,什么n層了等,看起來都費力,仔細琢磨可能是設計模式很欠缺,理解了設計模式才能是整個項目的代碼編寫更看起來好一點(0)。所以最近學習一下設計模式,隨便記錄一下,以后也好回頭看看。主要看的資料是c#設計模式,并不是我自己發明的啊()

??????? 前提:學習設計模式,我認為必須要把c#的基本概念和方法掌握熟練,比如,對象,類,接口,抽象類和方法,重寫,覆蓋,繼承

?????? 按照Gang of Four設計模式分為:創建型,結構型和行為型。

?????? 所以創建型模式都涉及到創建對象實例的方式。new運算符是c#最簡單的方式。但是程序本身不應該依賴對象如何創建,在不同的情況和需求下,對象創建本身也會有很多方式。

????? 工廠方法模式:根據我的理解,工廠方法模式就是創建一個“決策類”,這個決策類根據傳入的數據,然后實例化抽象基類的多個子類的一個某個對象。先看看簡單工廠模式,這個比較容易入門。

???? 舉個實例來說,window項目,建立一個文本框和按鈕。這個文本框要求輸入用戶的姓名,firstname和lastname。中間用空格或逗號分開。點擊按鈕后得到輸入的姓,名字。如果沒有空格或逗號的話那都是名字,沒有姓氏。一般我寫個判斷方法是否有空格或逗號也能實現這個功能。但是這簡單工廠模式會讓我們很容易理解工廠如何去實例化不同的子類對象。

?? 建立一個基類 ? public?? class Namer
??? {
????? protected string lname, fname;

????? public string getLname()
????? {
????????? return lname;
????? }

????? public string getFname()
????? {
????????? return fname;
????? }
??? }

然后有兩個子類分別繼續這個Namer。

檢查空格

?class FirstFirst:Namer
??? {
??????? public FirstFirst(string name)
??????? {
??????????? int n = name.Trim().IndexOf(" ");
??????????? if (n > 0)
??????????? {
??????????????? fname = name.Trim().Substring(0, n);
??????????????? lname = name.Trim().Substring(n + 1);
??????????? }
??????????? else
??????????? {
??????????????? lname = name;
??????????????? fname = "";
??????????? }
??????? }
??? }

??????檢查逗號

class LastFirst:Namer
??? {
??????? public LastFirst(string name)
??????? {
??????????? int i = name.Trim().IndexOf(",");
??????????? if (i > 0)
??????????? {
??????????????? fname = name.Trim().Substring(0, i);
??????????????? lname = name.Trim().Substring(i + 1);
??????????? }
??????????? else
??????????? {
??????????????? lname = name.Trim();
??????????????? fname = "";
??????????? }
??????? }
??? }

然后我們就要創建工廠了。代碼也很好理解,就是根據輸入的文本框,創建不同的對象

?? class NameFactory
??? {
??????? public NameFactory()
??????? { }

??????? public Namer getName(string name)
??????? {
??????????? int n=name.Trim().IndexOf(",");
??????????? if (n > 0)
??????????? {
??????????????? return new LastFirst(name);
??????????? }
??????????? else
??????????? {
??????????????? return new FirstFirst(name);
??????????? }
??????? }
??? }

然后在按鈕事件中:

?private void button1_Click(object sender, EventArgs e)
??????? {
??????????? NameFactory nameFac=new NameFactory();
??????????? Namer nm = nameFac.getName(this.textBox1.Text);
??????????? MessageBox.Show("FirstName : " + nm.getFname() + " LastName : " + nm.getLname());
??????? }

這樣我們在調用工廠的getName()時候就不需要知道創建的是哪個類。也不用知道是哪個類的getFname()和getLname()了

? 這是我看c#設計模式的一點理解,然后準備工廠模式之工廠方法模式

?

本文使用Blog_Backup未注冊版本導出,請到soft.pt42.com注冊。

轉載于:https://www.cnblogs.com/zjypp/archive/2007/04/14/2319506.html

總結

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

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