Die übliche Unterscheidung (zumindest die, die ich benutze, ich hoffe wirklich, es ist "üblich" :)) zwischen Eigenschaften und Methoden immer noch gelten.
Wenn der Akt Daten aus dem Objekt durch eine benannte Kennung (Eigenschaft oder Methode) des Erhaltens ist entweder:
- Eine teuere Operation (. Dh es könnte eine Datenbank abfragen)
- oder eine Operation, die hat Nebenwirkungen (dh es könnte ein internes Feld ändern)
... dann sollte es eine Methode sein.
Wenn die Operation leicht ist, ohne Nebenwirkungen, kann dies eine Eigenschaft sein.
Das Lesen des Namens einer Person ist also eine Eigenschaft, da dieser Wert wahrscheinlich im Objekt beginnen sollte.
Um jedoch herauszufinden, wie viele Bestellungen er im System hat, sollte das wahrscheinlich eine Methode sein, da es wahrscheinlich eine teurere Operation zu tun haben wird.
Zumindest das ist das Kriterium, das ich verwende.
Und ob es eine Klasse oder eine Schnittstelle ist macht mir in dieser Hinsicht keinen Unterschied.
In Ihrem speziellen Fall würde ich mit der Eigenschaft gehen. Ein "taggable" -Element sollte seine Tags kennen.