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

"オブジェクト指向のこころ"で出てくる順番にとりあえず従って、今回はAdapterパターンです。

今回も
http://www.dofactory.com/Patterns/PatternAdapter.aspx#_self2
C++に移植していきましょう。

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

簡単に解説すると、化合物を表すクラス(Compound)は、それ自身の情報を表示するDisplay()メソッドを持っています。
水やらエタノールやらの情報を表示したいとき、すでにあるChemicalDatabankクラスのもつメソッド群を使えそうです。
でも、化合物の情報を表示するには、Compoundクラスまたはその子クラスのDisplay()メソッドを利用するというインタフェースを利用しなければなりません。
利用しないとすると、化合物の情報を表示する度にどの方法で表示するかをいちいち決めてやらなきゃなりません。
ということで、ChemicalDatabankクラスをCompoundクラスのインタフェースにAdaptさせるというわけです。
なんかイメージだとCompoundクラスからWaterクラスやEthanolクラスを継承するのかなあと思いましたが、RitchCompoundクラスのコンストラクタに渡す文字列で判断するんですね。
本題とはあまり関係ないからいいですが。