国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

工廠模式之簡單工廠

2019-11-17 02:44:58
字體:
來源:轉載
供稿:網友
工廠模式之簡單工廠

工廠模式定義:實例化對象,用工廠方法代替new操作。

接口(IBase)

public interface IBase{    void Excute();}

實現類A(BaseAImpl):

public class BaseAImpl : IBase{    public void Excute()    {        Type type = this.GetType();        Console.WriteLine("類全A名稱:{0},類名:{1},是否實現接口IBase:{2}", type.FullName, type.Name, typeof(IBase).IsAssignableFrom(type));    }}

實現類B(BaseBImpl):

public class BaseBImpl : IBase{    public void Excute()    {        Type type = this.GetType();        Console.WriteLine("類B全名稱:{0},類名:{1},是否實現接口IBase:{2}", type.FullName, type.Name, typeof(IBase).IsAssignableFrom(type));    }}

類C(BaseC):(特殊類,用于區別)

public class BaseC {     public void Excute()    {        Type type = this.GetType();        Console.WriteLine("類全A名稱:{0},類名:{1},是否實現接口IBase:{2}", type.FullName, type.Name, typeof(IBase).IsAssignableFrom(type));    }}

工廠類(Factory):

/// <summary>/// 工廠類/// </summary>public class Factory{    /// <summary>    /// 工廠方法(創建實例的地方,需要什么拿什么)    /// </summary>    /// <param name="fullName">類型全名稱</param>    /// <returns>實現IBase的實例對象</returns>    public IBase CreateBase(string fullName)    {        // 獲取程序集里面的所有類型        Type[] types = this.GetType().Assembly.GetTypes();        // 遍歷所有類型,查找        foreach (Type type in types)        {            // 判斷類型全名稱和是否實現IBase接口            if (type.FullName == fullName && typeof(IBase).IsAssignableFrom(type))                return Activator.CreateInstance(type) as IBase;        }        return null;    }}

演示結果:

class PRogram{    static void Main(string[] args)    {        Factory factory = new Factory();        IBase instanceA= factory.CreateBase(typeof(BaseAImpl).FullName);        IBase instanceB = factory.CreateBase(typeof(BaseBImpl).FullName);        IBase instanceC = factory.CreateBase(typeof(BaseC).FullName);  // 特殊例子,用于區別        instanceA.Excute();        instanceB.Excute();        if (instanceC == null)         {            Console.WriteLine("類C:{0}未實現接口IBase", typeof(BaseC).FullName);        }           Console.ReadLine();    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 雅安市| 德昌县| 晋宁县| 陈巴尔虎旗| 什邡市| 锦州市| 清涧县| 南陵县| 广东省| 安塞县| 曲松县| 海原县| 屏东县| 湟中县| 清远市| 汝南县| 淳安县| 曲水县| 霍邱县| 马龙县| 怀柔区| 龙南县| 洱源县| 涪陵区| 高台县| 江城| 南开区| 定州市| 巩留县| 龙胜| 千阳县| 宁阳县| 霍邱县| 兴宁市| 哈尔滨市| 苗栗县| 双辽市| 滨州市| 福泉市| 元谋县| 都江堰市|