09/11/08 21:40:37
StrategyとTemplate Methodを比較した場合、規模が大きくなるにつれて、
Template methodの方がクラス数が爆発的に増大する可能性がある。
ここだけをみれば、Strategyの方が優れている様に見えるけど、
そうではなく、使いどころを誤った場合、そのようなカオス状態になるということ。
十分粒度が細かくなると、
Method_A()とMethod_B()でそれぞれバリエーション化することは、ほぼなくなるため、
>>790でも言ったように、Template Methodでも問題なくなってくると思う。
俺の場合、規模の大きなものを多階層化でクラス分解する場合、委譲型(StrategyやDecoratorなど)で粒度を細かくして行き、
末端のバリエーションに対して、抽象クラス型(Template Method)を適用するようにしてる。
また階層化のクラス分解については、アーキテクチャパターン
(Model-View-ControllerとかPresentation-Abstract-Cntrolとか)について調べてみるといいかも