Design Patterns – Template Metot Pattern Nedir?
Bu yazıda Template Methot Design Pattern’in ne olduğundan bahsedeceğim.
İlgini Çekebilir: Design Patterns Dersleri
Template Methot Design Pattern sıralı işlemlerin kullanımında uygulayabileceğimiz bir tasarım şablonudur. Bu sıralı işlemlerin seçilmesini sağlayan bir abstract class oluşturuyoruz. Bu abstract classımız diğer classlarımıza gerekli işlemlerin yapılmasını sağlayan bir yönetim görevi sağlayacaktır.
Uygulamamızda benzer kodların farklı case’ler ile bazı akışın değişmesini bu dizayn pattern ile çözebiliyoruz. Aynı kod bloklarının farklı kriterlere göre belirli akışları değişip ve aynı bağlama geldiği bir iş akışında rahatlıkla kullanabiliriz ve kod tekrarının önüne geçerek yönetimini oldukça kolaylaştırabiliriz.
- Ana akış abstract classımızda
- Ana akışa bağlı dallanan diğer claslarımız abstract class’tan implement edilir.
Bu yaklaşımın bir diğer artısı ise aynı kod parçacıklarının tekrar tekrar kullanılabilmesini ve genişletilebilmesini sağlamaktadır.
Uygulama Örneği
Bir demleme yazılımı yapacağız. Demleme yazılımında çay ya da kahve demleme yöntemleri olucak. Çay ya da kahve demlerken aynı olan adımları abstract classlarımızdan sub classlar oluşturacağız.
public abstract class Demle {
final void hazirla() {
suKaynat();
demle();
bardagaDok();
diger();
}
private void suKaynat() {
System.out.println("Su Kaynatıldı");
}
protected abstract void demle();
private void bardagaDok() {
System.out.println("Bardağa Döküldü");
}
protected abstract void diger();
}
Code language: PHP (php)
Yukarıdaki abstract classımızda kahve ve çay için ortak olan akışları ana classımızda oluşturuyoruz.
public class Kahve extends Demle {
private void sutEkle() {
System.out.println("Sut Eklendi");
}
private void kahveDemle() {
System.out.println("V60 ile demleniyor");
}
@Override
protected void demle() {
kahveDemle();
}
@Override
protected void diger() {
sutEkle();
}
}
Code language: PHP (php)
Kahve demlerken, kahveye özel adımları kendi sınıf içerisinde yazdık ve Demle ana classımızın adımlarını da kullanıyoruz.
Çay içinde aynı adımları kullanacağız ama ortak olanları yine Demle ana classımızdan alıyoruz.
public class Cay extends Demle {
private void seker() {
System.out.println("Şeker eklendi");
}
private void cayDemle() {
System.out.println("Çayı bekle");
}
@Override
protected void demle() {
cayDemle();
}
@Override
protected void diger() {
seker();
}
}
Code language: PHP (php)
Yukarıdaki örnekte görüldüğü gibi aynı akışın farklı dallarına göre verilen karar mekanızmalarında kullanılan bu desing pattern örneği bu şekildeydi.
İyi kodlamalar.
No Comment! Be the first one.