Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz.
Şablon yöntemi tasarım modeli, bir sınıfın tek bir yöntemi içinde bir algoritmanın adımlarını tanımlamanıza olanak tanır. Bu, bir uygulamanın belirli işlemlerini tek bir yöntemle sınırlamanıza olanak tanır.
Şablon yönteminin tanımladığı algoritmanın her adımı bir iç yöntemdir. Bununla birlikte, şablon yöntemi yalnızca bazı iç yöntemlerinin uygulanmasını işler. Alt sınıflar genellikle şablon yönteminin iç yöntemlerinden birini veya daha fazlasını uygular.
Bir alt sınıf, soyut bir yöntem uygulayabilir, ancak son bir yöntemle uygulanan algoritmayı yeniden tanımlayamaz.
Şablon Yöntemi Nasıl Çalışır?
Tipik bir şablon yöntemi modeli aşağıdaki yapıya sahip olacaktır:
songeçersizşablonYöntemi(){
soyutİşlem1();
soyutİşlem2();somutİşlem1();
somutİşlem2();
kanca();
}
Unutulmaması gereken ilk önemli nokta, templateMethod() öğesinin nihai olduğu, dolayısıyla hiçbir alt sınıfın bu yöntemi geçersiz kılamayacağıdır. Unutulmaması gereken diğer önemli nokta, şablon yöntemi modelinin kullandığı üç tür yöntem: somut, soyut ve kanca.
Template yöntemini barındıran soyut sınıf, tüm somut yöntemlerini uygularken, somut alt sınıflar soyut yöntemlerini uygular. Kanca yöntemi genellikle varsayılan olarak hiçbir şey yapmaz, ancak bir alt sınıf, gerektiğinde bu yöntemleri geçersiz kılma yeteneğine sahiptir.
Şablon Yöntem Kalıbını Java'da Uygulama
Şablon yöntemi kalıbı, bir uygulama için bir çerçeve görevi görür. Dolayısıyla, bu modeli, uygulama geliştirme için plan sağlayan yazılım çerçevelerinde sıklıkla görürsünüz.
Örneğin, uygulamanızı birçok veritabanı sisteminden birine bağlayabilirsiniz. Bir veritabanına bağlanma ve bir veritabanını kullanma adımları benzer bir şablonu takip eder:
halksoyutsınıfVeri tabanı{
// şablon yöntemi
songeçersizveritabanıŞablon(){
// soyut yöntemler
setDBDriver();
setCredentials();// somut yöntem
bağlamak();// soyut yöntemler
oluşturDB();
setData();
veri oku();// kanca yöntemleri
eğer (userWantsToUpdate()) {
veriyi güncelle();
}eğer (userWantsToDelete()) {
verileri sil();
}// somut yöntem
yakın bağlantı();
}soyutgeçersizsetDBDriver();
soyutgeçersizsetCredentials();
soyutgeçersizoluşturDB();
soyutgeçersizsetData();
soyutgeçersizveri oku();
soyutgeçersizveriyi güncelle();
soyutgeçersizverileri sil();geçersizbağlamak(){
System.out.println("Veritabanına bağlanılıyor...");
}geçersizyakın bağlantı(){
System.out.println("Veritabanı bağlantısı yok ediliyor...");
}mantıksalkullanıcıGüncellemek İstiyor(){
geri dönmekYANLIŞ;
}
mantıksalkullanıcıSilmek İstiyor(){
geri dönmekYANLIŞ;
}
}
Bu örnek Veritabanı sınıfı, herhangi bir veritabanıyla kullanabileceğiniz bir şablon oluşturmak için şablon yöntemi modelini kullanır. Bir veritabanını kullanmak için, uygulamanızın veritabanına bağlanması ve kullandıktan sonra bağlantıyı kesmesi gerekir. Bu faaliyetler genellikle tüm veritabanları için aynıdır. Bu nedenle, soyut Veritabanı sınıfı şunları uygulayabilir: bağlamak() Ve yakın bağlantı() yöntemler.
Şablon yöntemindeki diğer yöntemler, veritabanı türüne göre farklılık gösterecektir. Örneğin, bir MySQL veritabanı verileri tablolarda saklarken, bir MongoDB veritabanı, verileri koleksiyonlarda depolar. Eğer bir kullanmak istiyorsanız Java'da MySQL veritabanı, Veritabanı sınıfını genişleten yeni bir MySQL sınıfı oluşturmanız yeterlidir:
halksınıfMySQLuzanırVeri tabanı{
@geçersiz kıl
geçersizsetDBDriver(){
System.out.println("MySQL sürücüsü seçiliyor...");
}@geçersiz kıl
geçersizsetCredentials(){
System.out.println("MySQL veritabanı Kimlik Bilgileri ayarlanıyor...");
}@geçersiz kıl
geçersizoluşturDB(){
System.out.println("Yeni bir tablo oluşturuluyor...");
}@geçersiz kıl
geçersizsetData(){
System.out.println("Veritabanına veri ekleniyor...");
}@geçersiz kıl
geçersizveri oku(){
System.out.println("Veri tabanından veri alınıyor...");
}@geçersiz kıl
geçersizveriyi güncelle(){
System.out.println("Veritabanındaki veriler güncelleniyor...");
}
@geçersiz kıl
geçersizverileri sil(){
System.out.println("Veritabanından veriler siliniyor...");
}
}
MySQL sınıfı, Database sınıfının tüm soyut yöntemlerini uygular. Ayrıca bazı somut yöntemleri geçersiz kılabilir. Ancak, dokunamaz veritabanıŞablon() final anahtar sözcüğünü kullanan yöntem.
halksınıfAna{
halkstatikgeçersizana(Dize[] bağımsız değişkenler){
Veritabanı mySQLDB = yeni MySQL();
mySQLDB.databaseTemplate();
}
}
Bu Ana sınıf, yeni bir MySQL veritabanı nesnesi oluşturur ve bir uygulamanın veritabanına nasıl bağlanacağını simüle etmek için şablon yöntemini kullanır. Ana yöntemi çalıştırmak konsola aşağıdaki çıktıyı yazdırır:
Çıktıda, uygulamanın asla arama yapmadığını fark edeceksiniz. veriyi güncelle() Ve verileri sil() yöntemler. Bu nedenle kanca yöntemleri önemlidir. Bir SQL veritabanında yeni tablolar oluşturmak, veri eklemek ve verilerinizi görüntülemek isteyeceksiniz. Ancak, verileri güncellemek veya silmek istemeyebilirsiniz. Bu nedenle, kanca yöntemleri, alt sınıflara algoritmanın bu kritik yönlerini kontrol etme seçeneği sunar.
@geçersiz kıl
mantıksalkullanıcıGüncellemek İstiyor(){
geri dönmekdoğru;
}
Yukarıdaki kodu MySQL sınıfına ekleyerek, uygulama artık veritabanındaki verileri günceller. Ana sınıfı tekrar çalıştırırsanız, aşağıdaki güncellenmiş çıktıyı görüntüler:
Gördüğünüz gibi, uygulama şu anda Veritabanındaki verileri güncelliyor.
Şablon Yöntemi Tasarım Desenini Kullanmanın Yararları
Şablon yöntemi modelinin en büyük yararı, yazılımın yeniden kullanılabilirliğini desteklemesidir. Bu tasarım deseni, verimli programlamayı da destekler. Bir alt sınıfın yalnızca kendi işlemine özgü yöntemleri uygulaması gerekir.
Ek olarak, şablon yöntemi modelini kullanan bir uygulama, dış sınıflar işlem yapısını değiştiremeyeceğinden daha güvenlidir.