1 Eylül 2016 Perşembe

GoF - Template Method Örüntüsü

Not : GoF Tasarım Örüntüleri yazısına bakabilirsiniz.

Template Method - Davranışsal Örüntü
Template Method az kullanılan örüntülerden bir tanesi. Açıklamasındaki önemli nokta şu
...behavioral design pattern that defines the program skeleton of an algorithm in a method, called template method, which defers some steps to subclasses. It lets one redefine certain steps of an algorithm without changing the algorithm's structure...
Yani algoritmanın iskeletini bir template metod tanımlıyor.

1. Adımlar virtual metodlar olmalıdır.
2. Kalıtan sınıfta adımları gerçekleştiren metodlar genellikle public değildir.

C++
Şöyle yaparız. Kalıtım ve public olmayan metodlara dikkat etmek gerekir.
class B { 
public:
  virtual int f();
};

class D : public B { 
private: 
  int f(); 
}; 

void f() { 
  D d; 
  B* pb = &d; 
  D* pd = &d; 
  pb->f();     // OK: B::f() is public, 
               // D::f() is invoked
  pd->f();     // error: D::f() is private
} 
Java
Şöyle yaparız. addSpread () metodu kalıtan sınıfın gerçekleştireceği adımdır.
abstract class SandwichMaker<S extends Spread> {
  public void make(S spread) {
    toastBread();
    addSpread(spread);
    enjoy();
  }

  protected void toastBread() {
    System.out.println("...toasting bread");
  }

  protected abstract void addSpread(S spread);

  protected void enjoy() {
    System.out.println("this is yummy!");
  }
}



Hiç yorum yok:

Yorum Gönder