![]() |
SearchWiki Heuristics.RecentChanges Edit Page Page Revisions |
| Home Design Patterns Heuristics Software Development Software Process Patterns TheIntroduction LogicalDesign PhysicalDesign PatternFoundations GuidelinesAndMyths ReferenceImplementation DependencyPatterns UsabilityPatterns ExtensibilityPatterns MaintenancePatterns AntiPatterns UtilitiesAndTools AllPatterns | I feel it's important to provide some working samples that illustrate in code some of the concepts we've discussed thus far. I hope this is valuable for two reasons.
First, I think it helps to see an example to more fully understand the differences between logical and physical design, the importance of giving equal consideration to each, and the impact that each have on the flexibility of your software. This should help you understand the problem we're faced with when developing large software systems where we want to obtain a decent degree of reuse, maintainability, and extensibility.
Second, it should make the subsequent discussion on each of the heuristics much clearer by providing a context to which the heuristics can reference. Therefore, throughout the discussion in this chapter, I have planted references to many of the heuristics, allowing you to refer to a more detailed discussion should you have that desire.
I like to pick examples that are easy to follow, yet provide a bit of substance. The following example uses a payment calculator, similar to one you might use in popular spreadsheet programs to calculate the monthly payment for a loan. There are three versions, and the advantages and disadvantages of each are discussed.
Notable highlights of this discussion will include DependencyInjection and the use of LightweightContainers.
|