Abstract Factory Design Pattern

Çağlar GÜL
Çağlar GÜL | Blog
2 min readMar 14, 2020

Bu pattern’in amacı client’ın ihtiyacı olan ve aralarında ilişkiler bulunan nesnelerin üretiminden sorumlu olan soyut fabrika sınıfları yaratmaktır. Kısacası: Birbiri ile ilişkili veya bağımlı objeleri onların concrete classlarını oluşturmadan create edilmesini sağlar.

ConcreteFactory
Asıl Fabrika

AbstractProduct
Product tipinin şablonu. Soyut ürün.

Product
Asıl Ürün

Client
İstemci uygulamanın ulaştığı ara katman. Soyut Fabrika nesnesi üzerinden ürün üretir.

Nesnenin üretiminden AbstractFactory arayüzünü uygulayan ConcreteFactory tipi sorumludur. Ürün AbstractProduct arayüzü uygulayan Product tipidir.

Bu pattenle ne zaman kullanılmalı?

  1. Client hangi hangi altsınıfların kullanması gerektiğini bilmiyorsa
  2. Bu alt sınıfların nasıl yaratılacağını bilmiyorsa ya da bu görevi alt sınıflara delege etmek istiyorsa

Bu pattern ile client ihtiyaç duyduğu ürünlerin tiplerine göre farklı fabrikaları seçip kullanabilir. Bu fabrikalar sayesinde istemcinin ihtiyacı olan ürünler ve bu ürünlere bağlı nesneler ve fonksiyonlar istemciden bağımsız olarak abstract düzeyde gerçekleştirilerek tamamen clienttan soyutlanmış olur.

Örneğin bir veritabanı bağlantı projesi düşünelim. Bu proje sayesinde MSSQL ve Oracle’a bağlantı kuruluyor ve client bağlanmak istediği veritabanı tipine göre sorgularını çalıştırabiliyor. Burada oluşturacağımız Connection ve Command nesneleri birbiri ile ilişkili nesneler.

Bu patternimizle ilgili örnek bir class diagramını yazalım.

--

--

Çağlar GÜL
Çağlar GÜL | Blog

elektrik-elektonik mühendisi | yazılıma ve tasarıma meraklı | araştırmayı ve paylaşmayı seven | blogger ve oyun sevdalısı