您的位置:首页 > 其它

一、简单工厂模式(Simple Factory Pattern)

2008-03-12 21:19 274 查看
根据提供给它的数据,返回几个可能类中的一个类的实例.
通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的任务不同,而且根据不同的数据进行了优化.


namespace NameFactory




...{


public class Namer //父类




...{


protected string frName, lName;






public string getFrname()...{


return frName;


}






public string getLname() ...{


return lName;


}


}




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 = "";


}


}


}




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 = "";


}


}


}




public class NameFactory //简单工厂类




...{




public NameFactory() ...{}






public Namer getName(string name) ...{


int i = name.IndexOf (",");


if(i > 0)


return new LastFirst (name);


else


return new FirstFirst (name);


}


}


//功能:输入名字","与" "取出名字


public class Form1 : System.Windows.Forms.Form




...{


private System.Windows.Forms.Button btCompute;


private System.Windows.Forms.TextBox txFirst;


private NameFactory nameFact;


private System.Windows.Forms.TextBox txName;


private System.Windows.Forms.TextBox txLast;




private void init()




...{


nameFact = new NameFactory ();


}


private void btCompute_Click(object sender, System.EventArgs e)




...{


Namer nm = nameFact.getName (txName.Text );


txFirst.Text = nm.getFrname ();


txLast.Text = nm.getLname ();


}


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: