2012-08-10 2 views
5

私はStoreOwnerエンティティを持っています。 StoreOwnerにはStoreプロパティがあります。私は、次のユーザーストーリー持っユーザーのストーリーが親を言及しているが、そのアクションは子供に当てはまる場合、行動はどこにあるべきですか?

public class Product { } 

public class Store { 
    public IEnumerable<Product> Products { get; private set; } 
} 

public class StoreOwner { 
    public Store Store { get; private set } 
} 

:店のオーナーとして

を、私は私の店に製品を追加することができます。

"店舗に製品を追加する"の動作はどこで行われますか? StoreOwnerまたはStoreで?

店舗の場合、メソッド名はどのようになりますか?

+0

...明白なようです。右? –

+0

右入力ミスを申し訳ありません。 –

答えて

4

Storeに商品を入れると思いますので、Storeの子エンティティです。商品のコレクションを公開するのではなく、Store.AddProduct()のようなものです。

が唯一の現在の所有者がそれを行うことができ、私はこのは、必要に応じてが既に所有者に関する知識を持っているStoreのみStore場合に属すると考えていることを確認するためのロジックがあるが、間違いはすべてAddProductにしようとする前に検証する必要がある場合。

その部分はユーザーの役割のように見えるので、おそらくこれはUIコントローラに属しているか、または現在のユーザーが実際に店の所有者である場合は、これをユーザーの役割に因数分解して承認することができます。

1

"店舗を追加する"の動作はどこで生きていますか? StoreOwnerまたはStoreで?

は、私はあなたが、私はこの方法がStoreの一部でなければなりません製品

を追加することを意味想定しています。 store.AddProduct(product)のようなものです。サロンシャンプーなど何かでない限り、オーナーに商品を追加することはできません。

+0

メソッド名は何ですか? –

1

私が取った最良のアプローチの1つは、誰が何を所有しているかを常に見ていくことです。

ので:

StoreOwnerは A Storeがだからあなたの物語に基づいて製品

が含まれている店は、あなたが、その後Store.AddProduct(newProductを)言う上記のユースケースをY及び所有しています。

0

StoreOwnerインスタンスにアクセスできる場合にのみ製品を追加できる場合は、そこにメソッドを、それ以外の場合はStoreクラスにメソッドを配置します。

AddProductは、私はあなたが後者は何かが実際に店舗自体を構築するために持っている意味として振る舞いは、「店に製品を追加する」「ストアを追加」されていない意味を前提と