Progettazione della gerarchia dell'interfaccia per domini separati

3

Ci sono aziende e persone. Le persone potrebbero essere apprezzate e le aziende potrebbero essere commentate:

class Like
class Comment

class Person implements iLikeTarget
class Business implements iCommentTarget

Mi piace e commenti sono eseguiti da un utente (persona) in modo che siano creati:

class Like implements iAuthored
class Comment implements iAuthored

Anche le persone simili potrebbero essere utilizzate nella loro cronologia:

class history
class Like implements iAuthored, iHistoryTarget

Ora, uno sviluppatore intelligente viene e afferma che ogni cronologia è associata a un utente, quindi è necessario creare la cronologia:

interface iHistoryTarget extends iAuthored

quindi potrebbe essere rimosso da class Like :

class Person implements iLikeTarget
class Business implements iCommentTarget

class Like implements iHistoryTarget
class Comment implements iAuthored

class history

interface iHistoryTarget extends iAuthored

Qui, un altro ragazzo intelligente ha una domanda: come posso catturare il Authored fatto in Like e Comment classi? Potrebbe non sapere nulla sul concetto history nel progetto.

Facendo scalling questo tipo di funzionalità, le interfacce possono andare ai loro tipi incapsulati che causano più forza di tipo, d'altra parte sofferenza explicitness e anche gli utenti finali del codice si troveranno ad affrontare molto dolore da elaborare. Quindi, ecco la domanda: Devo incapsulare quei tipi dipendenti ai loro tipi principali (gerarchie di interfaccia) o no, oppure ripetere esplicitamente ogni tipo per ogni singolo livello del mio sistema tipo o ...?

    
posta Hossein Jazayeri 05.05.2014 - 12:09
fonte

1 risposta

1

Direi che essere un oggetto creato è indipendente dall'essere un elemento della cronologia, quindi il modo di riflettere il dominio più da vicino sarebbe:

class Like implements iHistoryItem, iAuthored

Questo indica che anche se Like era non un elemento della cronologia, sarebbe comunque un'azione autorizzata.

    
risposta data 07.05.2014 - 12:29
fonte

Leggi altre domande sui tag