コーディング規約 第3条
■ このスレッドは過去ログ倉庫に格納されています
0861デフォルトの名無しさん
2010/03/21(日) 13:46:08public: void Func1( ) { m_pA->Func1( ); }
private: A* m_pA;
};
Aという型が実装に使われてるのを隠すんなら、
そんなクラス名は不都合だし、メソッド名も同じになるのも苦痛。
型を継承した関係じゃないのに、
実装にある型の存在を予感させたりするのはブサイク。
上の例は class B {public void foo() {_a->Func1();}}; の形にしないとウマミが無い。
class DecratedA : public A {};
にして継承関係にすれば、
クラス名もメソッド名も自然になる。
コンストラクタでA *を受け取るようにして、
内部でそれに委譲しながら独自処理を行うと、
GoFで言うところのDecoratorパターンになる。
特性を動的に追加したりすることなく、
再帰的に合成することもなくて、
あるインスタンスへの間接的なアクセスを提供するなら、
Proxyパターンとなる。
■ このスレッドは過去ログ倉庫に格納されています