Changes

Jump to: navigation, search

Template Method

2,374 bytes added, 19:56, 19 March 2007
Apache Tomcat
Source from Zend Technologies, http://www.zend.com/zend/php5/php5-OOP.php?article=php5-OOP&kind=ph&id=3204&open=1&anc=0&view=1
== Real-life Application Applications ==
=== Apache Excalibur===
The following are portions of the code found in [http://www.google.com/codesearch?hl=en&q=show:b65X65FJv3k:tIVs6rnDDGE:CuwdO4_VJq8&sa=N&ct=rd&cs_p=https://svn.apache.org/repos/asf/excalibur/trunk/&cs_f=framework/api/src/test/org/apache/avalon/framework/test/CascadingErrorTestCase.java]  The following are portions of the code found in '''[CascadingErrorTestCase.java''' ]] and '''[http://www.google.com/codesearch?hl=en&q=show:5CjVErg7uPw:tIVs6rnDDGE:W66LfbDC3n0&sa=N&ct=rd&cs_p=https://svn.apache.org/repos/asf/excalibur/trunk&cs_f=framework/api/src/test/org/apache/avalon/framework/test/CascadingExceptionTestCase.java''' [CascadingEexceptionTestCase.java]] files.<br/><br/>
When comparing these two files, we can see that the two files share a common package '''org.apache.avalon.framework.test'''.
<pre>
<pre>
// From CascadingExceptionTestCase.java
public void testConstructor()
{
assertNotNull( new CascadingException( null, null ) );
}
</pre>
 
Source from [http://www.google.com/codesearch?hl=en&q=show:tIVs6rnDDGE:QLDR0Cw82Lo&sa=N&ct=rdl&cs_p=https://svn.apache.org/repos/asf/excalibur/trunk&cs_f=framework/api/src/test/org/apache/avalon/framework/test/ | Apache Excalibur Test Framework via Google Code Search]
 
=== Apache Tomcat ===
 
The following are portions of the code found in [https://svn.apache.org/repos/asf/tomcat/connectors/trunk/jk/java/org/apache/jk/common/Shm.java[Shm.java]] and
[https://svn.apache.org/repos/asf/tomcat/connectors/trunk/jk/java/org/apache/jk/common/Shm14.java[Shm14.java]]<br/><br/>
Looking at the '''Shm14.java''', we can conclude that '''Shm.java''' is the base class while ''''Shm14.java'''' is the subclass. In addition, ''''Shm.java''' also extends to '''JniHandler''', making it a subclass of that class.
<pre>
// From Shm14.java
public class Shm14 extends Shm {
}
</pre>
<pre>
// From Shm.java
public class Shm extends JniHandler {
}
</pre>
From the file '''Shm.java''', the following method is given.
<pre>
public int invoke(Msg msg, MsgContext ep )
throws IOException
{
if( apr==null ) return 0;
log.debug("ChannelShm.invoke: " + ep );
super.nativeDispatch( msg, ep, JK_HANDLE_SHM_DISPATCH, 0 );
return 0;
}
</pre>
In the ''''Shm14.java'''' file, the method from the base class is overridden with the following new one - its implementation changed, but the same structure.
<pre>
public int invoke(Msg msg, MsgContext ep )
throws IOException
{
if (log.isDebugEnabled())
log.debug("ChannelShm14.invoke: " + ep );
 
//
return 0;
}
</pre>
Source from [https://svn.apache.org/repos/asf/tomcat/connectors/trunk/jk/java/org/apache/jk/common/ | Apache Tomcat Sample Code via Google Code Search]
== References ==
Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. ISBN 0-201-63361-2.<br/>
[http://en.wikipedia.org/wiki/Template_method_pattern| Template Method on Wikipedia]<br/><br/><br/>
[[BTP600|BTP600 Wiki Page]]<br/>
[http://en.wikipedia.org/wiki/Template_method_pattern| Template Method on Wikipedia]<br/>
1
edit

Navigation menu