Design Problems
-
Defining Abstraction and Implementation Independently
-
How can an abstraction and its implementation
vary independently?
-
How can a compile-time binding between
an abstraction and its
implementation
be avoided?
-
Exchanging Implementations at Run-Time
-
How can an abstraction be configured with an implementation?
-
How can an implementation be selected and
exchanged at run-time?
-
Flexible Alternative to Subclassing
-
How can a flexible alternative be provided to subclassing
for changing an implementation at compile-time?