少し困っているので、よろしければ教えてください。
- クラスで新しい演算子を使用して、またはシングルトンを使用してオブジェクトを作成すると、それはコンポジションですか?
- ファクトリメソッドを呼び出すと、それも合成ですか?
少し困っているので、よろしければ教えてください。
コンポジションとアグリゲーションは、コンポーネントオブジェクトのインスタンス化方法ではなく、コンポーネントオブジェクトの存続期間に関係します。含まれているオブジェクトが破棄されるときにコンポーネントオブジェクトが破棄される場合、それはコンポジションです。コンポーネントオブジェクトが存続できる場合、それは集約です。
「構成」という用語は、UMLとOOP内でわずかに異なる意味を持っています。
UMLでは、コンポジションはより強力な形式の集約であり、「owns-a」アソシエーションのようなものです。
GoFデザインパターンブックは、OOPでは継承よりも構成を優先する必要があることを示唆しています。この場合、構成とは、クラスから継承するのではなく、クラスを参照することによって機能が提供されることを意味します。
いくつかの用語が混同されているようです。ファクトリメソッドの作成とオブジェクト化または呼び出しは、それ自体が構成ではありません。