Design Patterns

Why do we need good design?

The biggest part of the software budget is spent on maintenance: fixing bugs, adding features, integrating with new hardware. Presumably, a good design simplifies maintenance and makes it less expensive.

Here are some other good reasons: satisfaction, professionalism, and pride.

Isn't good design subjective?

Is there an objective difference in quality between McDonald's and Notre Dame?

Is there an objective difference between good and bad wine?

A good design is simple, elegant, and supports the Open-Closed Principle:

A system should be open to extension, but closed to modification.

How do experts create good designs?

Experts assemble design patterns selected from pattern catalogs.

A design pattern is a recurring collaboration.

A collaboration is a group of classes that work together to solve a specific design problem.

The expert begins with an architectural pattern that determines the overall structure of the application.

As the expert uses other design patterns to fill in the details of the architecture.