If you enjoy reading these exercises then please buy Crista’s book to support her work.
Style 13 – Abstract Things
- Larger problem is decomposed into abstract things that make sense for the problem domain
- Each abstract thing is described by what operations the things of that abstraction can do
- Concrete things are then bound to the abstractions
- The rest of the application uses the things not by what they are but by what they do in the abstract
First, let’s define our abstractions:
Unfortunately, after this point the implementation are basically identical to the Things style (except the relevant members in each type is defined as part of the corresponding abstraction rather than as a member of the type):
Finally, remember we need to “use the things not by what they are but what they do in the abstract”, so call the WordFrequencyController via its abstraction:
You can find the source code for this exercise here.