Factory (Fabrika) Pattern

Yusuf Çakal
Bilişim Hareketi
Published in
2 min readOct 28, 2017

--

Tasarım desenlerine kaldığımız yerden devam ediyoruz. diğer tasarım deseni yazılarımı buradan bulabilirsiniz. Ayrıca sizlerde tasarım deseni yazıları (okuduğunuz ya da yazdığınız) ekleyerek projeye katkıda bulunabilirsiniz. Peki gelelim konumuza Factory(Fabrika) tasarım deseni nedir ? Nelerde kullanılır ? bu ve benzeri sorulara cevap aramaya çalışıp bir örnek ile desteklemeyi düşünüyorum.

Factory (Fabrika) tasarım deseni sınıf yaratma üzerine kurulu bir yapıdır. Peki nelerde işimize yarayacak bu desen.

Ne yani komik mi şimdi bu ? fabrika resmi felan…

Yazdığınız program da birbirine benzeyen birden fazla sınıf olabilir. Bu tür sınıfları oluştururken her seferinde new operatörünü kullanmayın ya da o sınıflardan sanki birbirinden bağımsızmış gibi kod yazmayalım diye böyle bir örüntü tasarlamışlar. Bence de çok kullanışlı ve mantklı ayrıca bunu bir fabrikaya benzetmişler bir ürün üretirken ya da birden farklı birbirinin benzeri ürünü üretirken rolmodel alabiliriz fabrika ibaresini.🙂

Lafı çok fazla uzatmadan.. örneğimize geçiyorum.

‘Ne konuştun be kardeşim hadi icraata gel.’ seslerini duyar gibiyim.

Örneğimizde dışarıdan bakıldığında birbirinden farklı ama işlev olarak birbirine benzeyen iki sınıfı bir fabrika ile nasıl oluşturacağımızı anlatmaya çalışıcam. Bilgisayar düşünün aslında birden fazla bilgisayar üreten firma var dimi ama işlev olarak biri diğerine göre çok da uzak yerlerde değil. 💻

Neden bu interface’i oluşturduk diye sorarsanız yazının başında da bahsettiğim gibi birbirine benzeyen sınıf kavramından bahsettim bizim örneğimizde de benzerlik durumu bu interface üzerinden belirlenecek.

yukarı da gördüğünüz üzere birden fazla bilgisayar sınıfı mevcut fakat bu sınıflar Computer interface’inden kalıtarak bir benzerlik durumu sergiliyorlar.

Gelelim bu sınıfları oluşturacak fabrika sınıfımıza.

görüldüğü üzere ComputerFactory sınıfının bir tane static metodu var bu yordam diğer sınıfları oluştururken her seferinde tekrar tekrar oluşturmak yerine statik bir biçimde daha optimize olarak oluşturmaktadır.

Farkettiyseniz metod bir tane Class type parametresi alıyor. Bu parametre hangi sınıfı oluştutmak istediğimizi anlamak için ama fabrika sınıfı hangi sınıfı oluşturduğunu bilmiyor sadece Computer interface’inden türeyen bir sınıf olduğunu biliyor, ki dönüş tipi Computer tipinde.

son olarak main metodumuzda sınıfları oluşturuyoruz createComputer metoduna Class type geçtiğimize dikkat edin, bu kısmı farklı örneklerde farklı varyasyonlar görebilirsiniz.

Özetleyecek olursak bir sınıf oluşturur iken arada bir interface kullanarak kullanacağınız sınıfları kümeleyebilirsiniz, bununla birlikte araya bir factory (fabrika) sınıfı ekleyerek kodunuzu daha soyut bir biçimde daha anlaşılabilir bir biçimde yazabilirsiniz.

Tercih Sizin…

Kısaca bahsetmek istediklerim bu kadardı eklemek istediğiniz ya da tavsiyeniz olursa yorum yazarak bildirirseniz memnun olurum. Umarım faydalı olmuştur.

Sağlıcakla…

😉

--

--