TASARIM ÖRÜNTÜLERİ

Factory Method

Creational Patterns bir örneği olan Factory Method bize tek bir arayüzden(interface) türetilmiş sınıfların üretilmesi işlemini soyutlayan bir örüntüdür.

Onur Dayıbaşı
Design Patterns

--

Bilgi Notu: Diğer tüm Tasarım Örüntüleri yazıma bu linkten ulaşabilirsiniz.

Hangi Durumda

Bir arayüzden türemiş farklı farklı nesnelerimiz/bileşenlerimiz olduğunu düşünelim. Bu sınıflara ihtiyacımız olduğu yerlerde new ile oluşturduğumuz durumda tüm Concrete sınıfların kullanımı tüm sınıflara dağılmış olması istenilen bir yöntem değildir. Yeni nesne oluşturma ve bunun nesnenin yönetimi olabildiğince kontrollü bir şekilde yapılması geliştirilen uygulamalar için faydalı olacaktır.

Bir örnek üzerinden gidersek;

Shape: Şekil interface arayüzü sadece draw metodu bulunuyor. Bundan türeyen

  • Circle, Square Rectangle ….. şeklinde uzunca bir liste olsun.

Burda bu Shape türlerini kullanacak Client sınıflar. Arka planda Concrete nesneleri bilip bunları oluşturmak ile uğraşmak yerine type vb bilgileri verip bu sınıf oluşturma sorumluluğunu başka bir sınıfa bırakması oldukça faydalı olacaktır. Bu durumda

ShapeFactory : Shape oluşturulmasından sorumlu sınıf type hangi concrete sınıfları üreteceğini bilmesini. Bu üretim mantığını tek bir sınıf içerisinde tutup, bir geliştirme ve eklenme yapılacağı zaman sadece bu sınıfta değişiklik olması sağlanır.

Type bilgisinin String olması durumunda bir array içerisindeki [circle, square, …..] bilgileri dinamik oluşturmasını

İstemci sınıfta Concrete sınıflara import bağlantının olmamasını sağlar.

Factory Method Class Diagram
Shape Interface
Concrete Classes

ShapeFactory sınıfının görevi şekil oluşturma işlemini soyutlamak. Aldığı parametreye göre bir şekil oluşturuyor. Yarın sisteme yeni bir şekil eklemek istediğimizde değiştireceğimiz kısım sadece ShapeFactory içerisindeki bu method olmuş olacak. getShape metodu new metodunu soyutlamış olduk.

ShapeFactory Sınıfı

Şimdi bu Methodu dışarıdan bir istemcinin nasıl kullandığına bakalım. Öncelikle bir ShapeFactory oluşturuyor. Burdan istediği tipteki şekli ShapeFactory istiyor ve sadece draw metodunu çağırıyor.

İstemci Sınıf

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--