首页 > 开发 > 综合 > 正文

C#设计模式系列1-简单工厂模式

2024-07-21 02:17:35
字体:
来源:转载
供稿:网友
简单工厂模式及时根据它提供的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的任务都不同,而且根据不同的数据进行了优化。该设计模式实际上并不属于23个gof模式。 下面的例子就说明了这个道理:
       这个例子主要是用来根据用户录入的“firstname lastname”和“lastname,firstname”两种可能的姓名来获得firstname和lastname。父类是namer,子类是firstfirst,lastfirst,简单的工厂类是namerfact,具体的代码如下:


namespace gofclass
{
 //父类
 public class namer
 {
  protected string strfirstname;
  protected string strlastname;

  public string getfirstname()
  {
   return strfirstname;
  }
  public string getlastname()
  {
   return strlastname;
  }
 }

//以下是两个派生类
 
 public class firstfirst:namer
 {
  public firstfirst(string strname)
  {
   int i=strname.trim().indexof(" ");
   if(i>0)
   {
    strfirstname=strname.substring(0,i).trim();
    strlastname=strname.substring(i+1).trim();
   }
   else
   {
    strfirstname="";
    strlastname=strname;
   }
  }
 }

 public class lastfirst:namer
 {
  public lastfirst(string strname)
  {
   int i=strname.trim().indexof(",");
   if(i>0)
   {
    strlastname=strname.substring(0,i).trim();
    strfirstname=strname.substring(i+1).trim();
   }
   else
   {
    strfirstname="";
    strlastname=strname;
   }
  }
 }

//简单工厂类

 public class namefactory
 {
  public namefactory()
  {
  }
  public namer getname(string strname)
  {
   int i=strname.trim().indexof(" ");
   if(i>0)
    return new firstfirst(strname);
   else
    return new lastfirst(strname);
  }
 }
}

//使用方法

   namefactory namefac=new namefactory();
   namer namer=namefac.getname(tbname.text);
   tbfirstname.text=namer.getfirstname();
   tblastname.text=namer.getlastname();


,欢迎访问网页设计爱好者web开发。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表