日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

【設計模式】簡單工廠模式

 路人甲Java 2021-07-19

定義


通過工廠類提供的方法,創(chuàng)建不同的派生類

通常創(chuàng)建的類都具有共同的基類/接口

優(yōu)缺點


  • 優(yōu)點

客戶端與具體的實現(xiàn)類解耦

  • 缺點

新增產(chǎn)品需要修改原來工廠類的方法,不符合開閉原則

角色


  • 客戶端 --> 靜態(tài)工廠,抽象產(chǎn)品
  • 抽象產(chǎn)品 --> 具體產(chǎn)品
  • 具體產(chǎn)品
  • 靜態(tài)工廠 --> 抽象產(chǎn)品,具體產(chǎn)品

代碼


  • 抽象產(chǎn)品
public abstract class Phone
{
    public abstract void Call();
}
  • 具體產(chǎn)品
public class IPhone : Phone
{
    public override void Call()
    {
        System.Console.WriteLine("Call by IPhone");
    }
}
public class AndroidPhone : Phone
{
    public override void Call()
    {
        System.Console.WriteLine("Call by Android");
    }
}
  • 靜態(tài)工廠
public static class PhoneFactory
{
    public static Phone Create(string name)
    {
        switch (name)
        {
            case "IPhone":
                return new IPhone();
            case "AndroidPhone":
                return new AndroidPhone();
            default:
                throw new System.NotImplementedException($"未實現(xiàn)【{name}】類型");
        }
    }
}
  • 客戶端
var phone = PhoneFactory.Create("IPhone");
phone.Call();

phone = PhoneFactory.Create("AndroidPhone");
phone.Call();

示例代碼 - Github

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多