创建型模式 简单工厂模式(1)
1 简单工厂模式
例:
使用逗号,把lastname 和firstname区分开来
其中基类Namer:
 using System;
using System;
 namespace NameFactory
namespace NameFactory {
{ /// <summary>
    /// <summary> /// Summary description for Namer.
    /// Summary description for Namer. /// </summary>
    /// </summary> //Base class for getting split names
    //Base class for getting split names public class Namer     {
    public class Namer     { //parts stored here
        //parts stored here protected string frName, lName;
        protected string frName, lName; 
         //return first name
        //return first name public string getFrname(){
        public string getFrname(){ return frName;
            return frName; }
        } //return last name
        //return last name public string getLname() {
        public string getLname() { return lName;
            return lName; }
        } }
    } }
}
派生类FirstFirst和LastFirst
 using System;
using System;
 namespace NameFactory
namespace NameFactory {
{ /// <summary>
    /// <summary> /// Summary description for FirstFirst.
    /// Summary description for FirstFirst. /// </summary>
    /// </summary> public class FirstFirst : Namer
    public class FirstFirst : Namer {
    { public FirstFirst(string name)
        public FirstFirst(string name) {
        { int i = name.IndexOf (" ");
            int i = name.IndexOf (" "); if(i > 0) {
            if(i > 0) { frName = name.Substring (0, i).Trim ();
                frName = name.Substring (0, i).Trim (); lName = name.Substring (i + 1).Trim ();
                lName = name.Substring (i + 1).Trim (); }
            } else {
            else { lName = name;
                lName = name; frName = "";
                frName = ""; }
            } }
        } }
    } }
}
 using System;
using System;
 namespace NameFactory
namespace NameFactory {
{ /// <summary>
    /// <summary> /// Summary description for LastFirst.
    /// Summary description for LastFirst. /// </summary>
    /// </summary> public class LastFirst : Namer
    public class LastFirst : Namer {
    { public LastFirst(string name)         {
        public LastFirst(string name)         { int i = name.IndexOf (",");
            int i = name.IndexOf (","); if(i > 0) {
            if(i > 0) { lName = name.Substring (0, i);
                lName = name.Substring (0, i); frName = name.Substring (i + 1).Trim ();
                frName = name.Substring (i + 1).Trim (); }
            } else {
            else { lName = name;
                lName = name; frName = "";
                frName = ""; }
            } }
        } }
    } }
}
关系如上图所示
类 NameFactory
 using System;
using System;
 namespace NameFactory
namespace NameFactory {
{ /// <summary>
    /// <summary> /// Summary description for NameFactory.
    /// Summary description for NameFactory. /// </summary>
    /// </summary> public class NameFactory     {
    public class NameFactory     { public NameFactory() {}
        public NameFactory() {}
 public Namer getName(string name) {
        public Namer getName(string name) { int i = name.IndexOf (",");
            int i = name.IndexOf (","); if(i > 0)
            if(i > 0) return new LastFirst (name);
                return new LastFirst (name); else
            else return new FirstFirst (name);
                return new FirstFirst (name); }
        } }
    } }
}
主程序代码如下:
 private NameFactory nameFact;
private NameFactory nameFact; private System.ComponentModel.Container components = null;
private System.ComponentModel.Container components = null; private void init() {
        private void init() { nameFact = new NameFactory ();
            nameFact = new NameFactory (); }
        } private void btCompute_Click(object sender, System.EventArgs e) {
private void btCompute_Click(object sender, System.EventArgs e) { Namer nm = nameFact.getName (txName.Text );
            Namer nm = nameFact.getName (txName.Text ); txFirst.Text = nm.getFrname ();
            txFirst.Text = nm.getFrname (); txLast.Text = nm.getLname ();
            txLast.Text = nm.getLname (); }
        }
 
 
                    
                

 
     
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号