工厂模式(Factory Pattern)

Factory Pattern 创造型设计模式,提供一个创造对象的方式,在工厂模式中,创造对象的逻辑不对外暴露建立,只提供一个建立的接口。设计模式

定义一个建立对象的接口,其子类决定去建立哪个实例对象,建立过程在之类中进行。设计

图

工厂模式code

优势:调用者使用甚至须要知道建立对象的名字就能够,扩展性强,若是想增长,只须要增长一个工厂类就能够了,屏蔽产品的具体实现,只提供接口。
缺点:每增长一个工厂类,都须要增长一个工厂类和对象实现工厂,使系统类成倍增长,在必定程度上增长了系统的复杂度,也增长了系统具体类的依赖。对象

使用场景:复杂对象使用工厂模式,而简单对象则直接new 对象,若是简单对象使用工厂模式,就须要引入一个工厂类,增长系统复杂度blog

实例应用:一、超市打折活动,可能会有满减、8折、9折等等活动,这个时候就能够使用工厂模式。
二、建立不一样品牌的手机,每台手机都有打电话,发信息等功能继承

代码:
一、先建立一个手机的接口:接口

public interface Phone
    {
        string GetPhoneMessage();
    }

二、建立继承手机接口-华为手机、小米手机等string

public class Huawei : Phone
    {
        public string GetPhoneMessage()
        {
            return "Vender Name:Huawei";
        }
    }
public class MI : Phone
    {
        public string GetPhoneMessage()
        {
            return "Vender Name:Xiao Mi";
        }
    }

三、建立工厂类:根据条件建立对应的对象,条件能够本身设定产品

public class PhoneFactory
    {
        public static Phone GetPhone(Enum type)
        {
            Phone phone = null;

            switch (type)
            {
                case Vender.Huawei:
                    phone = new Huawei();
                    break;
                case Vender.Mi:
                    phone = new MI();
                    break;
                default:
                    break;
            }

            return phone;
        }
    }

    public enum Vender
    {
        Mi = 1,
        Huawei = 2
    }

四、调用it

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("======工厂模式======");
            Phone phone = PhoneFactory.GetPhone(Vender.Huawei);
            Console.WriteLine(phone.GetPhoneMessage());
            phone = PhoneFactory.GetPhone(Vender.Mi);
            Console.WriteLine(phone.GetPhoneMessage());
            Console.ReadLine();
        }
    }

效果:
效果图

相关文章
相关标签/搜索