Şablon Metot Kalıbı
Coddy'nin Python Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 52 / 64.
Template Method Deseni, bir algoritmanın iskeletini bir temel sınıfta tanımlar ve alt sınıfların algoritmanın yapısını değiştirmeden belirli adımları geçersiz kılmasına (override) olanak tanır.
İşte şablon yöntemi (template method) içeren bir temel sınıf:
class DataProcessor:
def process(self):
"""Algoritma yapısını tanımlayan şablon yöntemi"""
self.read_data()
self.process_data()
self.save_data()
def read_data(self):
print("Reading data...")
def process_data(self):
raise NotImplementedError("Subclasses must implement this")
def save_data(self):
print("Saving data...")Şablon yöntemi process() algoritma adımlarını tanımlarken, process_data() yönteminin uygulanması alt sınıflara bırakılmıştır.
Soyut metodu uygulayan somut sınıflar oluşturun:
class CSVProcessor(DataProcessor):
def process_data(self):
print("Processing CSV data")
class JSONProcessor(DataProcessor):
def process_data(self):
print("Processing JSON data")Her bir somut sınıf, gerekli adımın kendi uygulamasını sağlar.
Şablon yöntemini kullanın:
csv_processor = CSVProcessor()
csv_processor.process()
print() # Boş satır
json_processor = JSONProcessor()
json_processor.process()Oyun şablonu içeren başka bir örnek oluşturun:
class Game:
def play(self):
"""Template method for playing a game"""
self.start_game()
self.play_game()
self.end_game()
def start_game(self):
print("Game started!")
def play_game(self):
raise NotImplementedError("Define the game rules")
def end_game(self):
print("Game ended!")
class Chess(Game):
def play_game(self):
print("Playing chess - thinking strategically...")
class Soccer(Game):
def play_game(self):
print("Playing soccer - running and kicking...")
chess = Chess()
chess.play()Çıktı:
Reading data...
Processing CSV data
Saving data...
Reading data...
Processing JSON data
Saving data...
Game started!
Playing chess - thinking strategically...
Game ended!Önemli Nokta: Template Method Deseni, alt sınıfların belirli adımları özelleştirmesine izin verirken üst sınıfta ortak bir algoritma yapısı tanımlar. Üst sınıf genel akışı kontrol eder, ancak alt sınıflar belirli uygulamaları sağlar. Bu, bireysel adımlarda esneklik sağlarken tutarlı bir yapı sağlar.
Görev
Ortatemplate.py ve driver.py dosyalarını uygun kapsülleme ve metotlarla uygulayın. Adım adım rehberlik için TODO yorumlarını takip edin.
Kopya kağıdı
Template Method Deseni, bir algoritmanın iskeletini bir temel sınıfta tanımlar ve alt sınıfların algoritmanın yapısını değiştirmeden belirli adımları geçersiz kılmasına (override) olanak tanır.
Şablon yöntemi içeren bir temel sınıf oluşturun:
class DataProcessor:
def process(self):
"""Algoritma yapısını tanımlayan şablon yöntemi"""
self.read_data()
self.process_data()
self.save_data()
def read_data(self):
print("Reading data...")
def process_data(self):
raise NotImplementedError("Subclasses must implement this")
def save_data(self):
print("Saving data...")Soyut yöntemi uygulayan somut sınıflar oluşturun:
class CSVProcessor(DataProcessor):
def process_data(self):
print("Processing CSV data")
class JSONProcessor(DataProcessor):
def process_data(self):
print("Processing JSON data")Şablon yöntemini kullanın:
csv_processor = CSVProcessor()
csv_processor.process()
json_processor = JSONProcessor()
json_processor.process()Template Method Deseni, üst sınıfta ortak bir algoritma yapısı tanımlarken alt sınıfların belirli adımları özelleştirmesine izin verir. Üst sınıf genel akışı kontrol eder, ancak alt sınıflar özel uygulamaları sağlar.
Kendin dene
from template import Template
# Test senaryosu işleyicisi
test_case = input()
if test_case == "basic_test":
# YAPILACAK: "Test Name" adıyla bir Template nesnesi oluşturun
# YAPILACAK: Nesne üzerindeki display_info() metodunu çağırın
pass
elif test_case == "validation_test":
# YAPILACAK: "Validation Test" adıyla bir Template nesnesi oluşturun
# YAPILACAK: name özelliğini kullanarak ismi şu formatta yazdırın: "Name: {obj.name}"
passBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Object Oriented Programming bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerself ParametresiMetotlarÖzniteliklerYapıcı Metot (__init__)Özet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımsuper() FonksiyonuMetot Geçersiz KılmaÇoklu KalıtımMetot Çözümleme SırasıÖzet - Çalışan Hiyerarşisi7Özel Metotlar
Sihirli Metotlara GirişOperatör Aşırı YüklemeKapsayıcı Sihirli MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım kalıplarına girişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı13Final Meydan Okumaları
E-öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi5Çok Biçimlilik (Polymorphism)
Metot Geçersiz Kılmaya Yeniden BakışDuck TypingSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon ve KalıtımMixinsStatik ve Sınıf MetotlarıSınıf DekoratörleriBağlam Yöneticileri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı