zoukankan      html  css  js  c++  java
  • 工厂方法模式

    简单工厂模式的最大长处在于工厂类中包括了必要的逻辑推断。依据client的钻则条件动态实例化相关的类。对于client来说,去除了与详细产品的依赖。


    工厂方法模式,定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。工厂方法模式实现时。client须要决定实例化哪一个工厂来实现运算类,选择推断的问题还是存在的,也就是说,工厂方法把简单的内部逻辑推断转移到了client代码来进行,假设加入功能。本来须要改动工厂类,而如今改动的是client。

     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();
            }
        }

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

  • 相关阅读:
    HDU 1358 Period
    HDU 1867 A + B for you again
    jquery的height()和javascript的height总结,js获取屏幕高度
    [前端] jquery验证手机号、身份证号、中文名称
    通过GitHub Pages建立个人站点(详细步骤)
    jQuery中多个元素的Hover事件
    jquery判断密码是否一致?
    php 5.6以上可以采用new PDD连接数据库的方法。
    如何学习html画布呢(canvas)
    跨年总结2015,明年就是2016了
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7243087.html
Copyright © 2011-2022 走看看