2

これは私がかなり前から自問してきた質問なので、ここで皆さんに聞いてみることにしました。

インスタンス変数としてShop-objectを含む-objectがあると仮定しましょう。ProductList私のオブジェクトのコア機能はShopもちろん、を追加する機能Productです。

ショップに商品を追加するためのパブリックインターフェイスはどのようになりますか?

shop.AddProduct(product)

また

shop.Products.Add(product)

あなたの考えとあなたの助けに感謝します。

4

1 に答える 1

3

これは、Productsをプロパティとして公開するかどうか、またはメソッドを使用するかどうかについての質問です。そして、これに関してSOについてはすでに多くの質問があります。例えば:

プロパティとメソッド

個人的には、プロパティがコンテナオブジェクトの機能部分ではない場合、ほとんどの場合、プロパティを好みます。つまり、商品は店舗の不可欠な部分ではないということです。商品がなくても、お店はまだお店です。

製品は、ストア内に存在する単なるオブジェクトです。このように、それらはコレクションプロパティとして完全に理にかなっています。私はおそらくInventoryプロパティを持っているでしょうが、そのうちのProductsはinventoryのプロパティです。

いずれにせよ、メソッドは何かをするときに意味をなす傾向があります。単に何かを含むだけではありません。たとえばstore.PurchaseProduct(product)、商品コレクションからアイテムを削除しますが、それは何かも行います(ティルにお金を追加したり、在庫管理を行ったりします)。

メソッドを使用するもう1つの理由は、コレクションを操作するときにいくつかのことを行う必要がある場合です。たとえば、お金がティルに入る、または破損が記録されることを確認せずに、製品からオブジェクトを削除したくないとします。次に、引き続きプロパティを使用しますが、そのプロパティをプライベートにし、アクションを実行するメソッドを介してのみアクセスします。

しかし、これは主に哲学的な議論です。人々はどちらの方法でも意見を持つでしょう。重要なのはあなた自身の意見です。

于 2013-03-25T23:39:06.670 に答える