设计模式:工厂方法模式

先这里给大家分享一个学习设计模式好的网站:https://refactoring.guru/
今天先来说说最简单的设计模式:工厂方法模式

先来看看关系图:

抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。
具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
抽象产品角色:它是具体产品继承的父类或者是实现的接口。
具体产品角色:具体工厂角色所创建的对象就是此角色的实例。 

下面贴上代码:

    //产品公共接口
    public interface IGood
    {
        void ShowGood();
    }

    //具体产品A
    public class GoodA : IGood
    {
        public void ShowGood()
        {
            Console.WriteLine("生产了商品A");
        }
    }
    //具体产品B
    public class GoodB : IGood
    {
        public void ShowGood()
        {
            Console.WriteLine("生产了商品B");
        }
    }
    //具体产品B
    public class GoodC : IGood
    {
        public void ShowGood()
        {
            Console.WriteLine("生产了商品C");
        }
    }
    //抽象工厂角色
    public interface IFactory
    {
        IGood CreateGood();
    }
    //具体工厂A
    public class FactoryA : IFactory
    {
        public IGood CreateGood()
        {
            return new GoodA();
        }
    }
    //具体工厂B
    public class FactoryB : IFactory
    {
        public IGood CreateGood()
        {
            return new GoodB();
        }
    }
    //具体工厂C
    public class FactoryC : IFactory
    {
        public IGood CreateGood()
        {
            return new GoodC();
        }
    }

客户调用:

  IFactory factory = new FactoryA();
            IGood good = factory.CreateGood();
            good.ShowGood();

输出:

相比较简单工厂而言:工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行,用户只需要知道对应的工厂就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值