(一)简单工厂模式

简单工厂模式不属于GoF中的23个模式,但可以作为学习工厂模式的引导.
简单工厂模式一般情况下就是根据参数数据返回一个适当的子类,然后用基类或接口引用具体的对象,而不用考虑该实际对象的产生过程.

C#示例代码如下:

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            NameFactory nf 
= new NameFactory();
            Namer n 
= nf.getName("wu,donglei");
            Console.WriteLine(n.getFrname());
            Console.WriteLine(n.getLname());
            Console.ReadLine();
        }

    }


    
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.Trim().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)
        
{
            
if (name.IndexOf(","> 0)
            
{
                
return new LastFirst(name);
            }

            
else
            
{
                
return new FirstFirst(name);
            }

        }

    }

}

posted @ 2007-01-27 12:24  吴东雷  阅读(187)  评论(0)    收藏  举报