C++でデザインパターンを実装していこうよ 第3回 Bridgeパターン

"オブジェクト指向のこころ"をはじめて読んだとき、Bridgeパターンで一度挫折しかけました。

「実装から抽象的側面を切り出して、それらを独立して変更できるようにする」

"オブジェクト指向のこころ"では、[抽象的側面]がShapeクラス、[実装]がDrawingクラスでした。

http://www.dofactory.com/Patterns/PatternBridge.aspx#_self2

今回のサンプルでは、[実装]がDataObjectクラス、[抽象的側面]がCustomerBaseクラスです。

https://github.com/TakahashiShuuhei/DesignPatternPractice/blob/master/Bridge.cpp

DataObjectの子クラスの種類とCustomerBaseの子クラスの種類がそれぞれ増えると、その組合せの数はそれぞれの種類の数の積になります。

その組合せ全部のクラスを作ってなんていられませんね。

ということで、抽象的側面が、実装をメンバとしてもっておけば抽象的側面の数+実装の数だけクラスを作ればよいということになります。