-
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
Erich Gamma -
Since changing interfaces breaks clients you should consider them as immutable once you've published them.
Erich Gamma
-
Design patterns should not be applied indiscriminately. Often they achieve flexibility and variability by introducing additional levels of indirection, and that can complicate a design and/or cost you some performance. A design pattern should only be applied when the flexibility it affords is actually needed.
Erich Gamma -
A design that doesn’t take change into account risks major redesign in the future.
Erich Gamma -
Design Patterns - Elements of Reusable Object-Oriented Software.
Erich Gamma