STRATEGY DESIGN PATTERN — INTERFACE’NIN GÜCÜ

Mustafa Toker
Aug 5 · 3 min read

Merhabalar,

Bu yazıda uzun zamandır yazmak istediğim Strategy Design Pattern’e yani Strateji Tasarım Desenine değineceğim.

Strategy Design Pattern, nesnenin duruma göre stratejisini değiştirebilmesidir, Behavioural / Davranışsal patternler içerisinde yer alan bu pattern davranışına çalışma anında karar veren bir patterndir / desendir. Bu pattern uygulama içerisinde benzer algoritmaları sınıflandırmamızı ve çalışma anında kullanacağımız algoritmayı seçmemizi sağlar ve kendimizi tekrar etmekten -DRY- kurtarır.

UML Diagramı aşadağı ki gibidir;

Strateji Tasarım Deseni

Örnek verecek olursak,

Yukarıda ki iki sınıfta update metodu bulunmakta yani ikisi de aynı işi yapmaktadır biri Redis üzerinde diğeri de MySQL üzerinde. Fakat ileri zamanlarda Redis yerine Mongo kullanmak istersek, MongoStore sınıfını oluşturup uygulama içerisinde RedisStore sınıfının kullanıldığı satırları bulup değiştireceğiz. Bu bizim için biraz külfetli olurdu. İşte tam da bu noktada Strategy Design Pattern devreye giriyor.

Yeni bir Interface oluşturalım;

Datastore.php

Interfacemizi implement edelim;

Evet kodumuz bu şekilde daha güzel oldu fakat hala sorunlar var, hangi algoritmayı kullanacağına çalışma anında karar veriyor demiştik uygulama içerisinde Store’yi biraz daha soyutlayalım.

DatabaseAdapter.php

Datastore.php

Redis.php

MySQL.php

Gördüğünüz algoritmalar kendi içinde kapsüllenerek (encapsulate) uygulamanın geri kalanından soyutlandı ve uygulamamızın loose coupled bir yapıda oldu yani nesneler arası bağımlılığı gevşetmiş olduk.

Peki Redis yerine MongoDB’yi kullanmak istersek ne yapacağız ?

MongoDB.php

Daha sonra DatabaseAdapter.php dosyası içerisinde yer alan sınıfımızın constructor’un da bulunan if else bloğuna Mongodb’yi ekleyelim;

DatabaseAdapter.php

Gördüğünüz gibi yeni bir Database Adaptoru implemente etmek işte bu kadar basit 🙂

Bir sonra ki makalemizde görüşmek üzere sağlıcakla kalın (:

ClevelTeam

Teknoloji, Girişimcilik, Proje Geliştirme

    Mustafa Toker

    Written by

    ClevelTeam

    Teknoloji, Girişimcilik, Proje Geliştirme

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade