- Introduction
- Relationships
- Managing Dependencies
- Plugins
- Dependency Inversion (Depending on abstract classes, not concrete classes. Obtaining a reference to the appropriate instance.)
- InjectionVsLookup
- Testability. As you reduce the dependency structure of your classes, your system's testability increases significantly. It's must easier to test with mock objects when using injection.
- Wiring things together
- Factories (Creation using new vs. creation using reflection).
- Lightweight Containers
- Abilities of Logical Design
- Maintainability*
- Logical Design Viewpoint
- Development time relationships
- Fundamental Logical Design Concepts
- Abstraction
- Cohesion
- Coupling
- Encapsulation
- Modularity
- Hierachy
- Polymorphism
- Granularity
- Legacy Paradigms
- Behavior and Data
- Hierachies (Inheritance and Composition)
- Typing (Static vs. Dynamic)
- Run-time vs. Design-time structure
|