Open main menu

CDOT Wiki β

Changes

Bridge

1,280 bytes removed, 09:52, 11 June 2007
Consequences
</ul>
== Consequences ==
The Bridge pattern has the following consequence:
<ul>
<li>'''Decoupling interface and implementation'''
<ul><li> inheritance tightly couples an abstraction with an implementation at compile time. Bridge pattern can be used to avoid the binding between abstraction and implementation and to select implenetation at run time</ul>
<li>'''Improved extensibility'''
<ul><li> extend the Abstraction and Implementor hierarchies independently</ul>
<li>'''Hiding implementation detail from clients'''
<ul><li> shield clients from implentation details, like the sharing of implemntor objects and accompanying reference count merchanism</ul>
<li>'''Interface and implementation can be varied independently'''
<ul><li> maintaining two different class hierarchies for interface and implementation entitles to vary one independent of the other</ul>
<li>'''Lossely coupled client code'''
<ul><li> Abstraction separates the client code from the implementation</ul>
<li>'''Reduction in the number of sub classes'''
<li>'''Cleaner code and Reduction in executable size'''
</ul>
== Implementation ==
When applying the Bridge pattern, consider the following implementation issues:
<ul>
<ul>
<li>'''Only one Implementor'''</li>
<li>'''Creating the right Implementor object'''</li>
<li>'''Sharing implementors'''</li>
<li>'''Using multiple inheritance'''</li>
</ul>
</ul>
== Code Examples ==
====PHP Java Bridge in Java Code====
The following code is found on "Oregon State University Open Source Lab" which illustrate the Bridge pattern. The following is a part of the code which allows user to vary the class loader. <br/>
Source: http://gentoo.osuosl.org/distfiles/php-java-bridge_2.0.8.tar.bz2<br/>
File: JavaBridge.java<br/>
public void updateJarLibraryPath(String path, String extensionDir) {
if(cl==null) {
bridge.logMessage("You don't have permission to call java_set_library_path() or java_require(). Please store your libraries in the lib folder within JavaBridge.war");
return;
}
1
edit