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

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

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

       }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值