Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The term is "object orientation" wherein you decompose large complex problems into smaller problems by defining classes of objects each of which encapsulates a small part of the problem. The way objects interact is by message passing and objects find other objects to pass messages to by starting with the objects they contain.</p> <p>The larger and more complex the problem, the more work you have to do to decompose it into manageable pieces, so the more layers of objects you get. Sometimes small simple problems are decomposed badly into large numbers of objects, but that doesn't make object orientation itself an anti-pattern.</p> <hr> <blockquote> <p>the main problem is simply that the data objects grow too large through nesting as well as including irrelevent data. Example: You're sorting birds and rather than a simple bird object you receive an object bird, containing feathers, beak, possibleParasites, air, possibleHousesNestsCanBeIn, and foodTypes, food types contains fruit, insects, worms, seeds, seeds contains oak, elm, thistle, possibleAnimalsThatCanEatSeeds etc etc –</p> </blockquote> <p>The <a href="http://blogs.msdn.com/b/ebattalio/archive/2006/11/16/anti-pattern-kitchen-sink-maps.aspx" rel="nofollow">Everything but the kitchen-sink map</a> anti-pattern is probably the closest fit.</p> <blockquote> <p>Given a complex process with many complex rules, everything (business logic, related and unrelated procedures, etc) is shoved into the map.</p> </blockquote> <p>The best way to solve this is with a filtering operation where you specify a strongly typed interface like <code>interface BirdList extends Iterable&lt;Bird&gt; {}</code> and the query system provides an implementation of that backed by just enough data to support that interface.</p> <p>Your API could provide a number of different interfaces like <code>BirdList</code> and <code>BirdFeedingHabitMap</code>, <code>BirdNestingHabitMap</code>, etc. Clients can come up with a list of interfaces they need and the query system analyzes them, fetches the data, and uses <a href="http://docs.oracle.com/javase/1.3/docs/guide/reflection/proxy.html" rel="nofollow">proxy classes</a> to assemble an implementation class that exposes the query results in a type-safe way.</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. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      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