原廠模式{C#描述}

來源:互聯網
上載者:User

概述

    在軟體系統中,經常面臨著“一系列相互依賴的對象”的建立工作;同時由於需求的變化,往往存在著更多系列對象的建立工作。如何應對這種變化?如何繞過常規的對象的建立方法(new),提供一種“封裝機制”來避免客戶程式和這種“多系列具體對象建立工作”的緊耦合?這就是我們要說的抽象原廠模式。

    簡而言之: 通過傳入"類名", 建立不同的對象.

意圖

    提供一個建立一系列相關或相互依賴對象的介面,而無需指定它們具體的類。

類: CAdmin(管理員類), CUser(普通使用者類)

介面: IUser(使用者類)

關係: CAdmin(管理員類), CUser(使用者類) 都實現 IUser介面

類: CAdmin(管理員類)

namespace WebApplication1{    public class CAdmin:IUser    {        #region IUser 成員        public string GetName()        {            return "我是管理員, 小樣敢亂髮言逮捕!";        }        #endregion    }}

類: CUser(普通使用者類)

namespace WebApplication1{    public class CUser:IUser    {        #region IUser 成員        public string GetName()        {            return "我是普通使用者!";        }        #endregion    }}

介面: IUser(使用者類)

namespace WebApplication1{    interface IUser    {        string GetName();    }}

 

調用(實現部分):

//使用者物件protected void Button1_Click(object sender, EventArgs e){Label1.Text = GetName("WebApplication1.CUser");}//管理員對象protected void Button2_Click(object sender, EventArgs e){Label2.Text = GetName("WebApplication1.CAdmin");}//得到名字, 當然還有簡短的話 - -public string GetName(string className){IUser user = (IUser)Assembly.Load("WebApplication1").CreateInstance(className);return user.GetName();}

源碼下載

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.