简单工厂模式(Simple Factory Method Pattern)

图示原理

工厂模式


【注释】从图中可以看出,客户是与工厂打交道的,指示工厂生产某类产品,然后工厂生产出产品,客户统一以父类产品类对象的形式得到,从而使客户与具体产品的创建毫不相关。

各类解释

工厂类:担任这个角色的是工厂方法模式的核心。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。
抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或她们共同拥有的接口。一般由接口或抽象类实现。
具体产品角色:工厂方法模式所创建的任何对象都是这个角色的实例,由具体类实现。


范例

namespace ConsoleApplicationDemo
{
    public interface IApparel
    {
        string ShowMe();
    }
    public class ApparelFactory
    {
        public IApparel CreateApparel(string apptype)
        {
            switch (apptype)
            {
                case "DRESSSHIRT":
                    return new DressShirt();
                case "SPORTSSHIRT":
                    return new SportShirt();
            }
            return null;
        }
    }
    public class DressShirt : IApparel
    {
        public string ShowMe()
        {
            return ("Dress Shirt");
        }
    }
    public class SportShirt : IApparel
    {
        public string ShowMe()
        {
            return ("Sports Shirt");
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            //生成工厂对象
            ApparelFactory factory = new ApparelFactory();
            //客户直接给工厂指示,生成想要的产品,以统一的父类产品形式提取
            IApparel obj1 = factory.CreateApparel("DRESSSHIRT");
            IApparel obj2 = factory.CreateApparel("SPORTSSHIRT");
            string shirtType = obj1.ShowMe();
            Console.WriteLine(shirtType);
        }
    }
}



效果图

运行结果


简单工厂模式的优缺点

优点:
       1.模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。
       2.客户只需指示工厂创建哪个对象。

缺点:
       1.由于工厂类集中了所有产品创建逻辑,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码。 总之,就是关键部分的代码最好不轻易随需求产生变更,而简单工厂模式并没有做到这一点,所以抽象工厂模式(Abstract Factory Method Pattern)产生了-^^-。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值