CSC/ECE 517 Fall 2010/ch7 7f PW: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
Line 4: Line 4:
[[Image:Callsuper.png|Call Super Anti-pattern]]<br>
[[Image:Callsuper.png|Call Super Anti-pattern]]<br>


===Examples===
===Example of the Call Super Anti-pattern===
<pre>
<pre>
public class TestCase
public class TestCase
Line 11: Line 11:
   }
   }
public class TestCaseOne extends TestCase
public class TestCaseOne extends TestCase
   public void handle() {
   public void setup() {
     super.setup();
     super.setup();
     extraSetupForTestCaseOne();
     extraSetupForTestCaseOne();
Line 17: Line 17:


</pre>
</pre>
==Alternative Implementation==
Instead of forcing a method to call super(), it is generally considered a better practice to use the [http://en.wikipedia.org/wiki/Template_method_pattern Template method pattern.]


==References==
==References==
[1] Wikipedia, the free encyclopedia: Call Super, 2010. Wikimedia Foundation, Inc.: [http://en.wikipedia.org/wiki/Call_super]
[1] Wikipedia, the free encyclopedia: Call Super, 2010. Wikimedia Foundation, Inc.: [http://en.wikipedia.org/wiki/Call_super]
[2] MF Bliki: Call Super[http://martinfowler.com/bliki/CallSuper.html]
[2] MF Bliki: Call Super[http://martinfowler.com/bliki/CallSuper.html]

Revision as of 00:54, 30 November 2010

The Call Super Anti-pattern

What is the Call Super Anti-pattern

The Call Super anti-pattern shows up occasionally in object oriented code. Any time an inherited class overrides a method but is still required to call super() at some point during the method, then that is a case of this anti-pattern. It is not a good idea to require something else being called at some point during the method.
Call Super Anti-pattern

Example of the Call Super Anti-pattern

public class TestCase
  public void setup() {
    doStuff();
  }
public class TestCaseOne extends TestCase
  public void setup() {
    super.setup();
    extraSetupForTestCaseOne();
  }

Alternative Implementation

Instead of forcing a method to call super(), it is generally considered a better practice to use the Template method pattern.


References

[1] Wikipedia, the free encyclopedia: Call Super, 2010. Wikimedia Foundation, Inc.: [1] [2] MF Bliki: Call Super[2]