Anasayfa » Php » PHP Tasarım Desenleri » Structural Tasarım Desenleri
Uygulama genelinde sıkça kullanılan nesneleri (örn. Yapılandırma (Configuration)) merkezi bir saklama alanında tutma mimarisidir. Bu sıklıkla statik yöntemlere sahip sınıflar (veya Tekilleme (Singleton) deseni) kullanılarak yapılır. Ancak unutmayın, bu genelgeçer bir durum (global state) ortaya koyar ki, bunu her zaman…
Maliyetli olan veya yinelenmesi (duplicate) mümkün olmayan bir şeyi arayüzleyerek(interface) kullanılır. Örneğe ait kodlar; Test İşlemi şu şekilde olacaktır;
Bellek kullanımını en aza indirmek için kullanılır. Bir Flyweight(hafifletici), belleği mümkün olduğunca benzer nesneler ile paylaşır. Durum (state) içerisinde çok değişikliğe uğramayan çok sayıda nesne kullanıldığında gerek duyulur. Genel bir uygulama, harici veri yapılarında durumu tutmak ve gerektiğinde onları Flyweight(hafifletici)…
Kodu kolayca okunabilir bir biçimde yazma mimarisidir. Doctrine2: QueryBuilder aşağıdaki örnek nesneye benzer bir biçimde çalışır. Örneğe ait kodlar; Test İşlemi şu şekilde olacaktır;
Bir Facade(önyüz), bir veya birden fazla arayüzü gömerek (interface injection) bir istemci ve bir alt sistemi ayrıştırmak ve tabii ki karmaşıklığı azaltmak içindir. -Bir Facade(önyüz) alt sisteme erişimi yasaklamaz. -Bir alt sistem için birden fazla Facade(önyüz)’ye sahip olabilirsiniz (olmalısınız). İyi…
Daha iyi test edilebilir, bakım yapılabilir ve genişletilebilir kod elde etmek için gevşek bağlı bir mimaridir. Örnek olarak veritabı servisi olarak MySQL kullandığınızı ve bu servisi değiştirmek istediğinizi varsayın. Dependency Injection mimarisiyle yazılmış bu uygulamada kolaylıkla başka veritabanı alternatifi kullanabilirsiniz.…
Sınıf örneklerine (instance) dinamik olarak yeni işlevler eklemek için kullanılır. Örneğe ait kodlar; Test İşlemi şu şekilde olacaktır;
Bir Data Mapper (Veri Haritalayıcı), kalıcı bir veri deposu (çoğunlukla ilişkisel bir veritabanı (relational database)) ile bellekteki veri sunumu katmanı (alan katmanı, sunum katmanı (domain layer, representation layer)) arasında çift yönlü veri aktarımını gerçekleştiren bir Veri Erişim Katmanıdır (Data Access…
Bir gruptaki nesnelerin tümüne, tek bir nesne örneğiymiş (instance) gibi davranmak. Örnek verecek olursak; bir form sınıfı, tüm alt ögelerini (child element) tek bir form örneğiymiş gibi ele alır. Ne zaman render() metodu çağrılsa, peşi sıra tüm alt ögelerin render()…
Kullanılan sınıfların bağımsız olarak değişebilmesi için, bir soyutlanımı (abstraction), onun uygulanımından (implementation) ayırarak kullanılır. Örneğe ait kodlar; Test İşlemi şu şekilde olacaktır;