在网上看到的资料 ····· ··收集下
//根据需求 的变化只要在 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()); } }}