Program to the interface not the implementation

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
(See also)
(See also)
Line 5: Line 5:
 
== See also ==
 
== See also ==
 
* [[Dependency inversion principle]]
 
* [[Dependency inversion principle]]
* [[Design maxims]]
+
* [[Liskov substitution principle]]
 
* [[Design by contract]]
 
* [[Design by contract]]

Revision as of 03:39, 7 October 2008

This idea says that objects should depend on the abstractions of a class instead of it's concrete implementations. This reduces coupling from implementations, and increases flexibility. It means that clients are unaware of the specific types of objects they use, it only matters that the objects adhere to the abstract interface. If you wish to add another concrete subclass to the abstract class, the rest of the code will not be affected. The client can be given any implementation of the abstract class that it depends on and be able to use it.

This is closely related to the Dependency inversion principle.

See also

Personal tools