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

    工厂模式

    简单介绍

       工厂方法模式:定义一个用于创建对象的接口。让子类决定实例化哪一个类。

    工厂方法是一个类的实例化延迟到其子类。

    后期对操作扩展时仅仅须要加入实例化接口的方法。不须要改动。

    样例

    还举简单工厂模式中的样例。

    切割名字的方法

    classSplitName
    
        {
    
            privatestring frName, lName;
    
     
    
            publicstring LName
    
            {
    
                get { return lName; }
    
                set { lName = value; }
    
            }
    
     
    
            publicstring FrName
    
            {
    
                get { return frName; }
    
                set { frName = value; }
    
            }
    
    }


    继承封方法的子类

    逗号切割方法

    public CommaSplit(string name)
    
            {
    
                int i = name.IndexOf(",");
    
                if (i > 0)
    
                {
    
                   FrName = name.Substring(0, i);
    
                   LName = name.Substring(i + 1);
    
                }
    
                else
    
                {
    
                   FrName = name;
    
                   LName = "";
    
                }
    
            }


    空格切割方法

    classBlankSplit : SplitName
    
        {
    
            public BlankSplit(string name)
    
            {
    
                int i = name.IndexOf(" ");
    
                if (i > 0)
    
                {
    
                   FrName = name.Substring(0, i);
    
                    LName= name.Substring(i + 1);
    
                }
    
                else
    
                {
    
                   FrName = name;
    
                   LName = "";
    
                }
    
            }
    
     
    
    }


    工厂

    工厂用于创建切割姓名的对象

    接口

    interfaceIFactoryFunction
    
        {
    
            SplitName CreateSplitObject(string name);
    
    }


    创建逗号切割的对象

    classCommaObject : IFactoryFunction
    
        {
    
            publicSplitName CreateSplitObject(string name)
    
            {
    
                returnnewCommaSplit(name);
    
            }
    
        }


    空格切割

    classBlankObject : IFactoryFunction
    
        {
    
     
    
            publicSplitName CreateSplitObject(string name)
    
            {
    
                returnnewBlankSplit(name);
    
            }
    
    }


    client使用

      staticvoid Main(string[] args)
    
            {
    
                Console.WriteLine("请输入你的姓名");
    
                string inputName = Console.ReadLine();
    
                IFactoryFunction operFactory = newCommaObject();//创建工厂用逗号切割
    
                SplitName splitName =operFactory.CreateSplitObject(inputName);//实例化切割的对象
    
                Console.WriteLine("姓"+splitName.FrName);
    
                Console.WriteLine("名"+splitName.LName);
    
     
    
                Console.ReadKey(true);
    
     
    
            }


    总结

    工厂方法模式实现时。client须要决定实例化哪一个工厂来实现运算类,选择推断的问题还是存在的。工厂方法把简单工厂的内部逻辑推断移到了client来进行。

  • 相关阅读:
    单div绘制多元素图
    js笔试题系列之二——数组与对象
    JS设计模式——策略模式
    js笔试题系列之三——函数
    zepto.js中的Touch事件
    java定时任务之Scheduled注解
    汤姆大叔送书,咱也科学抢书
    Asp.net Mvc自定义客户端验证(CheckBox列表的验证)
    摆脱烂项目
    我的ORM发展史
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5242992.html
Copyright © 2011-2022 走看看