1. 程式人生 > >設計模式のFactoryPattern(工廠模式)----創建模式

設計模式のFactoryPattern(工廠模式)----創建模式

virt 連接 時也 有意 result 加減 set 增加 bre

一、產生背景

  設計一個連接服務器的框架,需要三個協議,"POP3"、"IMAP"、"HTTP",可以把這三個作為產品類,共同實現一個接口。

二、通常的做法

1、定義一個接口(或抽象方法)

  2、我們為這個接口提供多種實現

  3、選擇哪種實現的權利剝離客戶端

三、具體實例

下面是一個加減乘除四則運算的例子。

 public class Operation
    {
        private double _leftOP = 0;
        private double _rightOP = 0;

        public double LeftOP
        {
            
get { return _leftOP; } set { _leftOP = value; } } public double RightOP { get { return _rightOP; } set { _rightOP = value; } } public virtual double GetResult() { double result=0; return result; } }
public class OperationAdd : Operation //加法計算 { public override double GetResult() { double result = 0; result = LeftOP + RightOP; return result; } } public class OperationSub : Operation //減法計算 { public override
double GetResult() { double result = 0; result = LeftOP - RightOP; return result; } } public class OperationMul : Operation //乘法計算 { public override double GetResult() { double result = 0; result = LeftOP * RightOP; return result; } } public class OperationDiv : Operation //除法計算 { public override double GetResult() { double result = 0; if (RightOP == 0) //考慮除法的除數為0時沒有意義 throw new Exception("除法不能為0"); result = LeftOP / RightOP; return result; } } public class OperationFactory //定義OperationFactory(運算符工廠) { public static Operation createOperate(string operate) { Operation oper = null; switch (operate) { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; case "*": oper = new OperationMul(); break; case "/": oper = new OperationDiv(); break; } return oper; } }

四、設計模式分析

  優點:

    1、一個調用者想創建一個對象,只要知道其名稱就可以了。

    2、擴展性高,如果想增加一個產品,只要擴展一個工廠類就可以。

    3、屏蔽產品的具體實現,調用者只關心產品的接口。

  缺點:

    每次增加一個產品時,都需要增加一個具體類和對象實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的復雜度,同時也增加了系統具體類的依賴。這並不是什麽好事。

點擊下載源碼

設計模式のFactoryPattern(工廠模式)----創建模式