Tasarım kalıplarına giriş
Coddy'nin Python Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 44 / 64.
Tasarım desenleri, yazılım tasarımındaki yaygın sorunlara yönelik yeniden kullanılabilir çözümlerdir. Kodunuzdaki yinelenen tasarım sorunlarını çözmek için özelleştirebileceğiniz taslaklar gibidirler.
Tasarım desenlerini, deneyimli geliştiricilerin benzer sorunları çözmek için kullandığı kanıtlanmış şablonlar olarak düşünün. "Singleton desenini kullandım" dediğinizde, diğer geliştiriciler kodunuzun yapısını anında anlarlar.
İşte desenlerin neden önemli olduğuna dair basit bir örnek:
# Desen olmadan - karmaşık yaklaşım
class DatabaseConnection:
def __init__(self):
self.connection = "Connected to database"
# Sorun: Birden fazla bağlantı oluşturuldu
db1 = DatabaseConnection()
db2 = DatabaseConnection() # İsraf - başka bir bağlantı oluştururBir tasarım deseni ile daha iyi bir çözüm elde edersiniz:
# Singleton deseni ile - kontrollü yaklaşım
class DatabaseConnection:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
cls._instance.connection = "Connected to database"
return cls._instance
# Artık sadece tek bir bağlantı mevcut
db1 = DatabaseConnection()
db2 = DatabaseConnection()
print(db1 is db2) # True - aynı örnekNeden tasarım desenleri kullanılır:
- Tekrar Kullanılabilirlik: Benzer problemlere uygulayabileceğiniz çözümler
- İletişim: Geliştiriciler arasında ortak kelime dağarcığı
- En İyi Uygulamalar: Zamanla test edilmiş çözümler
- Sürdürülebilirlik: İyi yapılandırılmış, düzenli kod
Bu seride öğrenecekleriniz:
Creational Patterns (nesnelerin nasıl oluşturulduğu):
- Singleton Pattern - Sadece tek bir örnek
- Factory Pattern - Tam sınıfı belirtmeden nesne oluşturma
Yapısal Desenler (nesnelerin nasıl birleştirildiği):
- Adapter Deseni - Uyumsuz arayüzlerin birlikte çalışmasını sağlayın
- Decorator Deseni - Yapıyı değiştirmeden işlevsellik ekleyin
Davranışsal Kalıplar (nesnelerin nasıl etkileşime girdiği):
- Observer Kalıbı - Değişikliklerden birden fazla nesneyi haberdar edin
- Strategy Kalıbı - Algoritmaları dinamik olarak değiştirin
- Command Kalıbı - İstekleri nesne olarak kapsülleyin
Her desen dersi şunları kapsayacaktır:
- Hangi sorunu çözdüğü
- Python'da nasıl uygulanacağı
- Ne zaman kullanılacağı
- Gerçek dünya örnekleri
Önemli Nokta: Tasarım desenleri, yaygın programlama sorunlarına yönelik kanıtlanmış çözümlerdir. Kodunuzu daha sürdürülebilir, esnek ve anlaşılması daha kolay hale getiren ortak bir kelime dağarcığı ve en iyi uygulamalar sağlarlar. Her Python geliştiricisinin bilmesi gereken 7 temel deseni öğreneceksiniz.
Kopya kağıdı
Tasarım desenleri, yazılım tasarımındaki yaygın sorunlara yönelik yeniden kullanılabilir çözümlerdir. Yinelenen tasarım problemlerini çözmek için kanıtlanmış şablonlar sağlarlar.
Tasarım desenlerinin faydaları:
- Yeniden Kullanılabilirlik: Benzer sorunlara uygulayabileceğiniz çözümler
- İletişim: Geliştiriciler arasında ortak kelime dağarcığı
- En İyi Uygulamalar: Zamanla test edilmiş çözümler
- Bakım Kolaylığı: İyi yapılandırılmış, düzenli kod
Örnek - Singleton Deseni:
# Desen olmadan - birden fazla örnek oluşturur
class DatabaseConnection:
def __init__(self):
self.connection = "Connected to database"
# Singleton deseni ile - tek bir örnek olmasını sağlar
class DatabaseConnection:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
cls._instance.connection = "Connected to database"
return cls._instanceDesen Kategorileri:
- Oluşturucu Desenler (nesnelerin nasıl oluşturulduğu): Singleton, Factory
- Yapısal Desenler (nesnelerin nasıl birleştirildiği): Adapter, Decorator
- Davranışsal Desenler (nesnelerin nasıl etkileşime girdiği): Observer, Strategy, Command
Kendin dene
Bu ders bir kod alıştırması içermiyor.
Bu 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ı