Use an abstract class
·
When creating a class library which will be
widely distributed or reused—especially to clients, use an abstract class in
preference to an interface; because, it simplifies versioning. This is the
practice used by the Microsoft team which developed the Base Class Library.
(COM was designed around interfaces.)
·
Use an abstract class to define a common base
class for a family of types.
·
Use an abstract class to provide default
behavior.
·
Subclass only a base class in a hierarchy to
which the class logically belongs.
Use an interface
·
When creating a standalone project which can
be changed at will, use an interface in preference to an abstract class;
because, it offers more design flexibility.
·
Use interfaces to introduce polymorphic
behavior without subclassing and to model multiple inheritance—allowing a
specific type to support numerous behaviors.
·
Use an interface to design a polymorphic
hierarchy for value types.
·
Use an interface when an immutable contract
is really intended.
·
A well-designed interface defines a very
specific range of functionality. Split up interfaces that contain unrelated
functionality.
No comments:
Post a Comment