1

私は現在、最新の C++ を学習し、抽象ファクトリに焦点を当てているところです。私が理解していることから、Loki の主なアイデアの 1 つは、GoF で使用される「仮想」(ダイナミクス ポリモーフィズム) を回避することです。しかし、時々、それはまだ使用されています。抽象ファクトリの章で、AbstractFactoryUnit に「virtual」があります。http://loki-lib.cvs.sourceforge.net/loki-lib/loki/include/loki/AbstractFactory.h?view=markupこれまで読んだことから、それを回避する方法があります。http://en.wikipedia.org/wiki/Template_metaprogramming#Static_polymorphism

この場合、仮想を使用する方が効果的なのはなぜですか?

4

1 に答える 1

1

の目標は主に教育的であるように見えるのでLoki、静的ポリモーフィズムは明確にするために回避された可能性があると思います。抽象工場のような設計パターンを教えるとき、クラス間の関係は最も重要な側面です。このコンテキストでは、ポリモーフィズムがどのように実装されるかは、二次的な実装関連の問題のように思えます。

確かに、静的ポリモーフィズムの方が効率的かもしれませんが、コードの可読性が低下します。

大きなオブジェクトを頻繁に作成する場合は、静的ポリモーフィズムを使用するとメリットがあると主張するかもしれません。確かにそうですが、Loki はそのようなシナリオで使用することを意図していないと思います。その主な目的は教えることです。

Boost.Factoryのソースコードを見てください。役立つかもしれません。実際、Boost のソース コードから最新の C++ を勉強したいと思っています。確かに、Loki は Boost の基礎を築いたと言われていますが、Boost がより多くの用途を獲得したため、より多くのレビューと批判が行われたことを覚えておいてください。

于 2012-02-25T20:36:18.270 に答える