程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 我的Design Pattern之旅[3]:使用template改進Strategy Pattern(OO)(1)

我的Design Pattern之旅[3]:使用template改進Strategy Pattern(OO)(1)

編輯:關於C語言

在(原創) 我的Design Pattern之旅:Strategy Pattern (初級) (Design Pattern) (C++) (OO C++) (Template C++)中,我們使用了strategy pattern讓Grapher能畫Triangle、Circle和Square

因為需求再次改變,:D,我們希望Grapher能將文字印在各Shape中,執行結果如下

Draw Hello Shape!! in Square
Draw Hello C++!! in Circle

為了達到此需求,我們可以將IShape interface改成

class IShape {
public:
 virtual void draw(const char *text) const = 0;
};

但若將來需求再改變,希望畫的不是文字,而是一張圖片,那interface又必須再變動,為了一勞永逸,我們會將整個物件傳給各strategy,IShape interface改成如下

class IShape {
public:
 virtual void draw(Grapher &grapher) const = 0;
};

Grapher::drawShpae()將*this傳給各strategy

void drawShape() {
 this->shape->draw(*this);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved