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の子クラスの種類がそれぞれ増えると、その組合せの数はそれぞれの種類の数の積になります。
その組合せ全部のクラスを作ってなんていられませんね。
ということで、抽象的側面が、実装をメンバとしてもっておけば抽象的側面の数+実装の数だけクラスを作ればよいということになります。