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
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.
Şöyle yaparız. addSpread () metodu kalıtan sınıfın gerçekleştireceği adımdır.
Template Method - Davranışsal Örüntü
Template Method az kullanılan örüntülerden bir tanesi. Açıklamasındaki önemli nokta şu
Yani algoritmanın iskeletini bir template metod tanımlıyor....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...
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