Image for post
Image for post

Factory (Fabrika) Pattern

Yusuf Çakal
Oct 28, 2017 · 2 min read

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.

Image for post
Image for post

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…

😉

Türkiye'nin bilişim alanında gelişmesi için bir katkı

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store