Difference between revisions of "Template Method"

From CDOT Wiki
Jump to: navigation, search
(Code Samples)
(Code Samples)
Line 11: Line 11:
  
 
<pre>
 
<pre>
...
+
abstract class CheckBackground {
 +
 
 +
    public abstract void checkBank();
 +
    public abstract void checkCredit();
 +
    public abstract void checkLoan();
 +
    public abstract void checkStock();
 +
    public abstract void checkIncome();
 +
 
 +
  //work as template method
 +
    public void check() {
 +
        checkBank();
 +
        checkCredit();
 +
        checkLoan();
 +
        checkStock();
 +
        checkIncome();
 +
    }
 +
}
 +
 
 +
class LoanApp extends CheckBackground {
 +
    private String name;
 +
 
 +
    public LoanApp(String name) {
 +
        this.name = name;
 +
    }
 +
   
 +
    public String getName() {
 +
        return name;
 +
    }
 +
 
 +
    public void checkBank() {
 +
        //ck acct, balance
 +
        System.out.println("check bank...");
 +
    }
 +
 
 +
    public void checkCredit() {
 +
        //ck score from 3 companies
 +
        System.out.println("check credit...");
 +
    }
 +
 
 +
    public void checkLoan() {
 +
        //ck other loan info
 +
        System.out.println("check other loan...");
 +
    }
 +
 
 +
    public void checkStock() {
 +
        //ck how many stock values
 +
        System.out.println("check stock values...");
 +
    }
 +
 
 +
    public void checkIncome() {
 +
        //ck how much a family make
 +
        System.out.println("check family income...");
 +
    }
 +
}
 
</pre>
 
</pre>
  

Revision as of 17:09, 19 March 2007

Template Method

Template Method, a class behavioral pattern, provides the general steps of a method while deferring the implementation to its subclasses. Used to encapsulate algorithms, it can help reduce code duplication and maximizes the reuse of subclasses. Generally, an abstract base class is created, defining a template method of an algorithm. Later on, the subclasses can alter and implement the behavior.

UML Diagram

Code Samples

Java:

abstract class CheckBackground {
  
    public abstract void checkBank();
    public abstract void checkCredit();
    public abstract void checkLoan();
    public abstract void checkStock();
    public abstract void checkIncome();

  //work as template method
    public void check() {
        checkBank();
        checkCredit();
        checkLoan();
        checkStock();
        checkIncome(); 
    }
}

class LoanApp extends CheckBackground {
    private String name;
   
    public LoanApp(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }

    public void checkBank() {
        //ck acct, balance
        System.out.println("check bank...");
    }

    public void checkCredit() {
        //ck score from 3 companies
        System.out.println("check credit...");
    }

    public void checkLoan() {
        //ck other loan info
        System.out.println("check other loan...");
    }

    public void checkStock() {
        //ck how many stock values
        System.out.println("check stock values...");
    }

    public void checkIncome() {
        //ck how much a family make
        System.out.println("check family income...");
    }
}

References

Links

BTP600