Changes

Jump to: navigation, search

Template Method

2,064 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|[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.javapublic class Shm14 extends Shm {}</pre><pre>// From Shm.javapublic 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