Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>For your entity classes, I think you should leave the interface abstraction to the end, after you've defined all your business entities and can extrapolate a common behavior pattern among them. Only then can you infer a common interface among them. But your entity classes are ultimately concrete; there's no sense in trying to abstract them further.</p> <p>Ultimately changes to these concrete classes would require changes to the controllers/views also interacting with them. Don't fret over this. Once you've defined all your views for each entity, then you can start working out the abstractions, if there are any.</p> <p>If you have already defined your concrete entities, then you can start abstracting away for views. For a financial example, suppose I have a Trade class. Obviously I can have specific types of trades, such as a BondTrade, EquityTrade, etc. So I can also have a TradeView, which can have concrete views, i.e. BondTradeView, EquityTradeView, etc. You can have a higher level of abstraction, but ultimately, you'll need concrete classes that would define a specific view. </p> <p><a href="http://sourcemaking.com/design_patterns/facade" rel="nofollow">Look at the Facade Design pattern as an example.</a> The facade can be used to create views based on your concrete implementations. It's a way of unifying all your concrete entities. It would contain the logic to know what view to create, and how, based on your entity. This would be a way to simplify the propagated changes done on your entities.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload