Object Design: Reusing Pattern Solutions

References:

  1. Bernd Bruegge and Allen H. Dutoit, "Object-Oriented Software Engineering", Third Edition, Chapter 8

8.1 - Introduction: Bloopers

8.2 - An Overview of Object Design

8.3 - Reuse Concepts: Solution Objects, Inheritance, and Design Patterns

8.3.1 - Application Objects and Solution Objects

8.3.2 - Specification Inheritance and Implementation Inheritance

8.3.3 - Delegation

8.3.4 - The Liskov Substitution Principle

8.3.5 - Delegation and inheritance in Design Patterns

8.4 - Reuse Activities: Selecting Design Patterns and Components

8.4.1 - Encapsulating Data Stores with the Bridge Pattern

8.4.2 - Encapsulating Legacy Components with the Adapter Pattern

8.4.3 - Encapsulating Context with the Strategy Pattern

8.4.4 - Encapsulating Platforms with the Abstract Factory Pattern

Note: The last two classes on the right should read EIBBlind and LuxmateBlind respectively.

8.4.5 - Encapsulating Control Flow with the Command Pattern

8.4.6 - Encapsulating Hierarchies with the Composite Design Pattern

Here are some other examples of the Composite design pattern, involving scene graphs in computer graphics / virtual reality. These images were taken from a Virtual Reality course taught at the University of Michigan: http://www.cs.uic.edu/~jbell/Courses/Eng591_F1999/outline_6.html Scene graphs are a directed acyclic graph used to describe the objects in a scene and things like lights and fog that affect their appearance. Grouping nodes in this implementation include Group, Separator, Switch, Level of Detail, and Transform Separator

8.4.7 - Heuristics for Selecting Design Patterns

8.4.8 - Identifying and Adjusting Application Frameworks

8.5 - Managing Reuse

8.5.1 - Documenting Reuse

8.5.2 - Assigning Responsibilities

8.6 - ARENA Case Study

8.6.1 - Applying the Abstract Factory Design Pattern

8.6.2 - Applying the Command Design Pattern

8.6.3 - Applying the Observer Design Pattern

8.6.4 - Lessons Learned

Supplemental Material

The following pages are copied from "Design Patterns - Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, a.k.a. "The Gamg of Four".