謝謝q大的回覆,但是我還是不太懂,先說一下,我並沒有一定要說我的想法
比較好,只是想了解一下差異,在您比較兩者差異的時候我的想法被當作
不能有輸入,似乎不太公平,如果要比較應該有同樣的立足點,同時,我修改class名稱
讓它看起來比較舒服,我直接修改在下面(引文中修改)。
P.S.
會一直有疑問是因為我總覺得,兩者的結構是完全等價的,但是可以用多型解決的問題
以那麼多前人的經驗不可能硬要弄出新的pattern,所以somehow我的想法一定有缺陷無法
應付變動,而我就是想要知道那個問題是什麼?
※ 引述《qrtt1 (有些事,有時候。。。)》之銘言:
: ※ 引述《worldxxi ()》之銘言:
: : 今天上課講到decorator pattern,我有個疑問就是,為什麼設計上不寫成這樣
: : abstract class 主餐
: : {
: : protect Decorator list;
: : abstract public int cost();
: : }
: : class 豬排 : 主餐
: : {
: : public override int cost()
: : {
price=130;
foreach(decorator in list){
price = decorator.cost(price);
}
return price;
: : }
: : }
: : ...
abstract class Decorator
: : {
: : }
class 味增湯 : Decorator
: : {
: : public override int cost(price)
: : {
//handle price
return newPrice;
: : }
: : }
: : ...
//實際使用長成這樣
main(){
unDecorator = new 某主餐();
unDecorator.addDecorator(new 味增湯);
unDecorator.addDecorator(new 優惠時段);
: : 那個all list cost在哪邊做先不管,我的意思是UML繼承架構不要讓副食品繼承主餐,
: : 而是讓而是用 1