工厂方法模式

简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的钻则条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
工厂方法模式,定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单的内部逻辑判断转移到了客户端代码来进行,如果添加功能,本来需要修改工厂类,而现在修改的是客户端。

 class Namer
    {
        public string fName, lName;

        public void GetLName()
        {
            Console.WriteLine(lName);
        }

        public void GetFName()
        {
            Console.WriteLine(fName);
        }
    }
    class FirstName : Namer
    {
        public FirstName(string name)
        {
            int i = name.Trim().IndexOf(",");
            if (i > 0)
            {
                fName = name.Substring(0, i).Trim();
                lName = name.Substring(i + 1).Trim();
            }
            else
            {
                lName = name;
                fName = "";
            }
        }
    }
    public LastName(string name)
        {
            int i = name.Trim().IndexOf(",");
            if (i > 0)
            {
                lName = name.Substring(0, i);
                fName = name.Substring(i + 1).Trim();
            }
            else
            {
                lName = name;
                fName = "";
            }
        }
    }
     interface INameFactory
    {
        Namer CreatName(string _name);
    }
    class FirstNameFactory : INameFactory
    {
        public Namer CreatName(string _name)
        {
            return new FirstName(_name);
        }
    }
    class LastNameFactory : INameFactory
    {
        public Namer CreatName(string _name)
        {
            return new LastName(_name);
        }
    }
     class Program
    {
        static void Main(string[] args)
        {
            INameFactory inf = new FirstNameFactory();
            Namer nm = inf.CreatName("Hello,world");
            nm.GetFName();
            nm.GetLName();
        }
    }

在下列情况下,应该考虑使用工厂方法:
一个类无法预测他要创建的对象属于哪一个类
一个类用它的子类来指定创建对象
要把创建哪一个类的信息局部化的时候

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值