工厂模式

来源:互联网 发布:板式家具算料软件 编辑:程序博客网 时间:2024/06/05 15:08

工厂模式

简介

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

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

后期对操作扩展时只需要添加实例化接口的方法,不需要修改。

例子

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

分割名字的方法

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


客户端使用

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


总结

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

0 0
原创粉丝点击