创建型模式 简单工厂模式(1)

1 简单工厂模式
例:
使用逗号,把lastname 和firstname区分开来

其中基类Namer:

using System;

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

    }

}

派生类FirstFirst和LastFirst

using System;

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

        }

    }

}

 

using System;

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

        }

    }

}

关系如上图所示
类 NameFactory

using System;

namespace NameFactory
{
    
/// <summary>
    
/// Summary description for NameFactory.
    
/// </summary>

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

    }

}

主程序代码如下:

private NameFactory nameFact;
private System.ComponentModel.Container components = null;
        
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 ();
        }


 

posted @ 2006-11-28 18:48  jhtchina  阅读(233)  评论(0)    收藏  举报