橋設計模式其實就是一個簡單的has a relationship,就是一個類擁有另一個類,並使用另一個類實現需要的功能。
比如遙控器和電視之間可以使用橋設計模式達到可以使用同一個遙控器控制多台電視機的目的。
這樣的設計思想是多種設計模式反反復復使用基本思想。
仔細思考下會發現多種設計模式的底層思想其實是相通的,不過具體實現或者某些細節,應用等有那麼一點差別罷了。
下面就實現一個TV和remoter類,其中的remoter是可以隨時更換的。
#includeclass Remoter { public: virtual void changeChannel() = 0; }; class OldRemoter : public Remoter { short channel; public: OldRemoter(short c) : channel(c) {} void changeChannel() { printf("Channel : %d\n", channel++); } }; class NewRemoter : public Remoter { int channel; public: NewRemoter(int c) : channel(c) {} void changeChannel() { printf("Channel : %d\n", channel++); } }; class TV { protected: Remoter *remoter; int channel; public: TV(Remoter *r) : remoter(r), channel(0) {} virtual void changeRemoter(Remoter *r) { remoter = r; } virtual void changeChannel() { remoter->changeChannel(); } }; class BrandOneTV : public TV { public: BrandOneTV(Remoter *r) : TV(r){} }; int main() { Remoter *ore = new OldRemoter(0); Remoter *nre = new NewRemoter(1); TV *tv1 = new BrandOneTV(ore); tv1->changeChannel(); ore->changeChannel(); tv1->changeChannel(); tv1->changeRemoter(nre); tv1->changeChannel(); nre->changeChannel(); tv1->changeChannel(); return 0; }