设计模式-----简单工厂

    技术2022-05-11  23

     

    在网上看到的资料 ·····  ··收集下

    //根据需求 的变化只要在 NameFactory中添加相应的属性,然后添加他的一个子类;然后更改Factory中的方法;客户直接调用 不用了解其中的变化

    using  System; using  System.Collections.Generic; using  System.Text; // 简单工厂====================================================================================   namespace  NameFactory {         /// <summary>     /// Summary description for Namer.     /// </summary>     //Base class for getting split names     public class Namer    {        //parts stored here         protected string frName, lName;        //return first name         public string getFrname()        {            return frName;        }        //return last name         public string getLname()        {            return lName;        }    }} namespace  NameFactory {         /// <summary>     /// Summary description for FirstFirst.     /// </summary>     public class FirstFirst : Namer    {        public FirstFirst(string name)        {            int i = name.IndexOf(" ");            if (i > 0)            {                frName = name.Substring(0, i).Trim();                lName = name.Substring(i + 1).Trim();            }            else            {                lName = name;                frName = "";            }        }    }}    namespace  NameFactory  {     ///<summary>     /// Summary description for LastFirst.     /// </summary>     public class LastFirst : Namer     {         public LastFirst(string name) {             int i = name.IndexOf (",");             if(i > 0{                 lName = name.Substring (0, i);                 frName = name.Substring (i + 1).Trim ();             }             else {                 lName = name;                 frName = "";             }         }     } } namespace  NameFactory {         /// <summary>     /// Summary description for NameFactory.     /// </summary>     public class NameFactory    {        public NameFactory() { }        public static Namer  getName(string name)        {            int i = name.IndexOf(",");            if (i > 0)                return new LastFirst(name);            else                return new FirstFirst(name);        }    }} namespace  NameFactory {    public class test    {        static void Main()        {            Namer a = NameFactory.getName("Edward De Vere");            Console.WriteLine(a.getFrname()+"    "+a.getLname());        }    }}  

    最新回复(0)