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 ...?