博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

設計模式(1):簡單工廠模式(Simple Factory Pattern)

Posted on 2006-05-25 11:01  donald  阅读(189)  评论(0)    收藏  举报
概叙

    Simple Factory模式是参数化的工厂方法模式, 工厂类根据提供的标识创建具体产品,被创建的产品共享一个共同的Product借口

角色和结构


 
工厂角色(厨师):    创建产品
抽象产品角色(菜):     定义工厂创建对象的借口
具体产品角色(红烧肉,水煮鱼):    工厂创建的具体产品


解说
 
在简单工厂模式里面
,客户端不直接创建具体产品, 而是通过传入具体产品ID给工厂类(Creator)创建, 示例代码如下:

/// <summary>
/// 菜類(抽象產品)
/// </summary>

public abstract class Foot
{
    
/// <summary>
    
/// 可製作, 可烹飪
    
/// </summary>

    public abstract void Cook();
    
    
/// <summary>
    
/// 味道
    
/// </summary>

    public abstract string Taste{get;}

}




/// <summary>
/// 紅燒肉類(具體產品)
/// </summary>

public class Meet : Foot
{
    
public override void Cook()
    
{
        
//燒的步驟,方法
        Console.Write("先調料, 然後炒肉");
    }


    
public override string Taste
    
{
        
get
        
{
            
return "辛辣,可口";
        }

    }



}




/// <summary>
/// 水煮魚類(具體產品)
/// </summary>

public class Fish:Foot        
{

    
public override void Cook()
    
{
        
//燒的步驟,方法
        Console.Write("先放水, 等水3分開時, 然後放魚");

    }


    
public override string Taste
    
{
        
get
        
{
            
return "清香,可口";
        }

    }

}

public class Cook
{
    
/// <summary>
    
/// 廚師類(工廠,Creator)
    
/// </summary>
    
/// <param name="name"></param>
    
/// <returns></returns>

   public Foot Create(string name)
   
{
       
switch(name)
       
{
           
case "Fish":
               
return new Fish();
           
case "Meat":
               
return new Meet();
       }


      
return null;
   }


}

客戶端代碼如下:
/// <summary>
    
/// Client 的摘要描述。
    
/// </summary>

    class Client
    
{
        
/// <summary>
        
/// 應用程式的主進入點。
        
/// </summary>

        [STAThread]
        
static void Main(string[] args)
        
{
            Factory _ft
=new Factory();

            Foot _foot
=_ft.Create("Meat");
            
//Foot _foot=_ft.Create("Fish");


            _foot.Cook();
            Console.Write(_foot.Taste);
            
        }

    }



总结

Simple Factory是一种简化了的工厂方法模式


 

参考文献:
《设计模式
JAVA与设计模式