これは、Productsをプロパティとして公開するかどうか、またはメソッドを使用するかどうかについての質問です。そして、これに関してSOについてはすでに多くの質問があります。例えば:
プロパティとメソッド
個人的には、プロパティがコンテナオブジェクトの機能部分ではない場合、ほとんどの場合、プロパティを好みます。つまり、商品は店舗の不可欠な部分ではないということです。商品がなくても、お店はまだお店です。
製品は、ストア内に存在する単なるオブジェクトです。このように、それらはコレクションプロパティとして完全に理にかなっています。私はおそらくInventoryプロパティを持っているでしょうが、そのうちのProductsはinventoryのプロパティです。
いずれにせよ、メソッドは何かをするときに意味をなす傾向があります。単に何かを含むだけではありません。たとえばstore.PurchaseProduct(product)
、商品コレクションからアイテムを削除しますが、それは何かも行います(ティルにお金を追加したり、在庫管理を行ったりします)。
メソッドを使用するもう1つの理由は、コレクションを操作するときにいくつかのことを行う必要がある場合です。たとえば、お金がティルに入る、または破損が記録されることを確認せずに、製品からオブジェクトを削除したくないとします。次に、引き続きプロパティを使用しますが、そのプロパティをプライベートにし、アクションを実行するメソッドを介してのみアクセスします。
しかし、これは主に哲学的な議論です。人々はどちらの方法でも意見を持つでしょう。重要なのはあなた自身の意見です。