2012-08-10 5 views
5

Ich habe eine StoreOwner Entität. StoreOwner verfügt über eine Store-Eigenschaft.Wo sollte Verhalten leben, wenn die User-Story die Eltern erwähnt, aber die Aktion ist auf ein Kind?

public class Product { } 

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

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

Ich habe die folgenden User Story bekommt:

Als Ladenbesitzer, ich ein Produkt zu meinem Speicher hinzufügen kann.

Wo sollte das Verhalten "Hinzufügen des Produkts zum Geschäft" leben? Auf dem StoreOwner oder dem Store?

Wenn es der Speicher ist, was wäre der Methodenname?

+0

Ich nehme an, Sie meinen das Verhalten „ein Produkt in den Laden Hinzufügen“, nicht „Hinzufügen des Ladens“, da diese etwas bedeutet hat, um tatsächlich den Laden zu bauen selbst . Recht? –

+0

Richtig! Entschuldigung für den Tippfehler. –

Antwort

4

Ich würde es in Store setzen, wie ich denke, die Produktkollektion ist ein Kind Einheit in Store. So etwas wie Store.AddProduct() im Gegensatz zum Aussetzen der Produktkollektion.

Wenn Logik ist sicher, dass der aktuelle Besitzer es nur zu machen, tun kann, ich glaube, das optional nur in Store gehört, wenn Store bereits Kenntnisse über den Besitzer, sollte aber definitiv vor allen AddProduct versuchen validiert werden .

Dieser Teil scheint wie eine Benutzerrolle, also vielleicht gehört dies in Ihre UI-Controller oder wenn der aktuelle Benutzer ist eigentlich der Ladenbesitzer, vielleicht dies in die Benutzerrolle Faktor und autorisieren dagegen.

1

Wo sollte das Verhalten "Hinzufügen des Geschäfts" leben? Auf dem StoreOwner oder dem Store?

Ich nehme an, Sie bedeuten Zugabe des Produkts

Ich würde das Verfahren ein Teil des Store sein. Etwas wie store.AddProduct(product). Sie können kein Produkt zu einem Besitzer hinzufügen, es sei denn, es ist ein Salon Shampoo oder etwas

+0

Wie lautet der Methodenname? –

1

Einer der besten Ansätze, die ich unternommen habe, ist es immer zu betrachten, wer was besitzt.

So:

Ladenbesitzer besitzt einen Shop A Store Produkt enthält

So auf der Grundlage Ihrer Geschichte die oben Anwendungsfall YAND würden Sie dann Store.AddProduct (NEWPRODUCT) sagen;

0

Wenn Sie nur ein Produkt hinzufügen können, wenn Sie Zugriff auf eine StoreOwner Instanz haben, legen Sie die Methode dort, andernfalls in der Store Klasse.

Der Name AddProduct scheint offensichtlich ...