John Joseph Bachir
Pros:
-focus on interface, better reflects design model
-decouples client from implementations
-lets you vary implementation classes
-lets you check use-violations
-prepares system for future extension
-enables division of work
-provides implementation reuse
-provides skeleton of how to achieve reuse
-does not impose undue restrictions on subclasses
-increases opportunity of division of work
Cons:
-programming overhead and increased complexity
-no implementation and code reuse
-semantics of interface need to be defined carefully
-to allow implementation variation, it may not be fixed
-clients may not make assumptions about implementations
-no need to cast to implementation class
|