用三種設計模式實現同一種功能:四則運算。
三種設計模式相同的部分為四則運算類的設計,包括基類,加法運算類,減法運算類,乘法運算類和除法運算類,其**如下:
class cclac
;class cclacadd:public cclac
};class cclacsub:public cclac
};class cclacmul:public cclac
};class cclacdiv:public cclac
};
一、對於簡單工廠模式,設計工廠類和main函式**如下:
class factory
return cs;
}};void main()
} virtual ~context()
int getresult(int a,int b) };
void main()
;class factoryadd:public factory
};class factorysub:public factory
};class factorymul:public factory
};class factorydiv:public factory
};void main()
{ cout<<"factory method mode:"cout<<"a+b="cout<<"a-b="cout<<"a*b="cout<<"a/b="簡單工廠模式和工廠方法模式的不同在於工廠方法模式對每種方法的實現都提供了乙個類,這些類繼承於公共的基類,在使用時將基類工廠指標指向專用工廠物件即可,這樣的好處在於為更改使用演算法提供了方便,如下**
//簡單工廠模式
//當需要將加法改為減法時,需要將三處'+'改為『-』
factory factory;
ccalc *calc1=factory.createcalc('+');
ccalc *calc2=factory.createcalc('+');
ccalc *calc3=factory.createcalc('+');
//工廠方法模式
//將加法演算法改為減法時,只需將factory *factory=new factoryadd;更改為factory *factory=new factorysub;即可
factory *factory=new factoryadd;
cclac *calc1=factory->createcalc();
cclac *calc2=factory->createcalc();
cclac *calc3=factory->createcalc();
簡單工廠模式與工廠方法模式
簡單工廠模式是屬於建立型模式,又叫做 靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的乙個特殊實現。百科 最大的優點是包...
簡單工廠模式與工廠方法模式
工廠模式是建立模式,主要是為建立物件提供過渡介面 以便將建立物件的具體過程遮蔽隔離起來,達到提高靈活性的目的。工廠模式在 深入淺出設計模式 和 大話設計模式 中分為三類 這三種模式從上到下逐步抽象,並且更具有一般性。我剛開始看著 大話設計模式 學習,抽象工廠還沒看到,所以這一篇就先記一下前兩種,後面...
簡單工廠模式與工廠方法模式
簡單工廠模式,以計算器為例,結構如圖 簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。問題在於,如果增加乙個子功能,需要新增相應的子類外,還要修改原有的工廠類,增加case判斷,修改原有的類,這就違背了 開放 封...