CodeBlanks Logo Icon CodeBlanks

Strategy

Strategy desenini öğrenirsin.

Strategy

Strategy, bir işlemin farklı yöntemlerini çağrılabilir nesneler olarak tanımlar; istemci çalışma anında birini seçer. Python'da işlevler doğal çağrılabilirdir, bu yüzden Strategy işlevleri kullanmak kolaydır.

def add(a, b):
    return a + b

def mul(a, b):
    return a * b

def calculate(strategy, a, b):
    return strategy(a, b)

print(calculate(add, 3, 4))  # 7
print(calculate(mul, 3, 4))  # 12

Strategy, koşullu dalları (if/elif) çağrılabilir nesnelere çevirir; bu, kodun genişletilmesini kolaylaştırır.

işlev stratejisi

Python'da işlevler birinci sınıf nesnelerdir; bir işleve parametre olarak geçirilebilir, listede saklanabilir. Bu, Strategy desenini uygulamayı kolaylaştırır.

strategies = [add, mul, lambda a, b: a - b]
for s in strategies:
    print(s(10, 3))  # 13, 30, 7

Sınıf tabanlı strateji de mümkündür; ancak işlev genellikle daha kısa ve okunurdur.

Uygulama Strategy ile hesapla

def add(a, b): ve def mul(a, b): işlevlerini tanımla (add return a + b, mul return a * b yapsın). def calculate(strategy, a, b): işlevini yaz; return strategy(a, b) yapsın. print(calculate(add, 3, 4)) ve print(calculate(mul, 3, 4)) ile sonuçları yazdır.

Başlangıç kodu

main.py
# add ve mul işlevlerini tanımla
# calculate işlevini yaz: strategy parametresini çağırır
# add ve mul stratejileriyle calculate çağrısı yap ve sonuçları yazdır

Örnek çözüm

main.py
def add(a, b):
    return a + b

def mul(a, b):
    return a * b

def calculate(strategy, a, b):
    return strategy(a, b)

print(calculate(add, 3, 4))
print(calculate(mul, 3, 4))

Beklenen çıktı

7
12

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Strategy kavramlarını eşleştir

Kavram Anlamı
strategy parametresi Çağrılabilirdir
add, mul Strateji işlevleridir
calculate(strat, a, b) Stratejiyi çağırır
if/elif Stratejisiz kodda kalır

2 Strategy deseninde calculate(strategy, a, b) nasıl çalışır?

  • strategy(a, b) çağrılır Doğru cevap
  • strategy yok sayılır
  • strategy yazdırılır
  • strategy silinir

Açıklama: calculate, strategy parametresini çağırır; bu bir işlevdir.

3 calculate gövdesini tamamla

Soru
def calculate(strategy, a, b):
    return ____(a, b)
Cevap
def calculate(strategy, a, b):
    return strategy(a, b)

Açıklama: return strategy(a, b) ile strateji çağrılır.

İleri seviye bölümündeki tüm dersler