Genel

Factory Pattern

Bu yazımda design pattern’lara giriş yapmak istiyorum. Yazılımcılar her zaman amele işler yapmaktan kaçınır ve bu doğrultuda kendi tecrübelerini yansıtacakları pattern’lar oluştururlar. Aslında büyük çaplı projelerde her zaman karşılaştığımız sorunlardan biri olan benzer class üretme ve her benzer class için obje türetme sorununu çözen bir tasarım kalıbı olan Factory Pattern’i anlatacağım. Uzatmadan giriş yapalım.

Top üreten bir fabrika düşünelim. Futbol, voleybol ve basketbol topu. Fabrika bu 3 çeşit için birbirine benzer süreçler işler ve aslında her biri için farklı makineler kullanmazlar. Sadece ufak dokunuşlarla topların özelliklerini değiştirirler. Bu sayede her tip için makine alınması ihtiyacı çıkmaz, maliyet düşer ve zamandan kazanç sağlanır. Factory pattern de bizzat fabrika çalışma mantığına göre çalışır. Birbirine benzer class’ları ayrı ayrı workflow’larımızda türeteceğimize bir tane base class oluştururuz içerisinde yapacağımız ürünleri oluştururuz mantığıyla çalışmaktadır. Her seferinde tekrar nesne üretme maliyetinden, benzer classlar için ayrı tanımlamalar yapma ameleliğinden de bu sayede kurtuluruz. Çalışma mantığını kodla açıklayacağım daha anlaşılır olacağına inanıyorum.

Üretim yapacak araç tiplerimizi tanımlayalım. Bu enumlar sayesinde workflow’umuzda erişim sağlayabileceğiz.

Araçların ortak özelliklerini tanımlayalım. Pattern’in yapımıza, projemize uygun olduğunu bu interfacedeki metodlarımızın fazlalığından anlayabiliriz. Ne kadar az özellik varsa o kadar pattern’e uzak diyebiliriz.

Ürünlerimizin classlarını oluşturalım. IVehicle interface’imizden türetilen araç tiplerini tanımlamamız gerekiyor. DisplayInfo metodumuzu interface gereği kullanmamız gerekiyor. Burada bir sınıf daha türetip DisplayInfo metodumuzu base’den de türetebiliriz.

Fabrikanın temelini oluşturalım. Workflow Akışında ProduceVehicle sayesinde new ile yeni nesne türetme derdinden kurtuluyoruz.

Fabrikamızı oluşturalım. Switch case yapısı ile anlaşılır olması için gösterdim. Factory içerisinde static class tanımlayıp classları üretip de yapabilirdik. Proje durumumuza göre şekillendirebiliriz.

Yukarıda yazılan kodla anlayacağımız gibi araçları gruplayıp daha sonra fabrika yardımıyla workflow içerisinde kullanılabilir bir yapı ortaya çıkardık.

0727

Yorum Yap

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Giriş Yap/Kayıt Ol