Design Pattern Dersleri #1.2 (Golang ile)
Bu yazı Design Pattern Dersler #1 (Giriş + Factory Patterns) yazısının ekidir. Daha detaylı bilgi için lütfen öncelikle o yazıyı okuyunuz.
Factory Patterns
1.Simple Factory Pattern:
Tek bir fabrika sınıfı oluşturulur ve sırasıyla arabaÜret, motosikletÜret, BisikletÜret fonksiyonları hazırlıyoruz ve bu sınıfın bu methodları ile araba, motosiklet ve bisiklet sınıflarını üretiyoruz.
2.Static Factory Pattern:
Fabrika Sınıfı içerisinde oluşturduğumuz static tek bir fonksiyon ile farklı nesneler üretebiliyoruz. Buradaki gerçek hayat örneğinde bir fabrikamız var, biz her bir nesne üretirken bu fabrikaya o nesnenin adını söylüyoruz ve fabrika gidip o nesneyi üretiyor. bu pattern’daki static kavramı fonksiyonun statik olmasından kaynaklıdır.
3. Factory Method Pattern:
Bu Pattern da üretilecek nesnelerin üretim kısımları ile kullanım kısımlarını ayırmayı hedefliyoruz. İkinci amacımız ise kullanım sırasındaki tekrarlanacak kodlarda tekrarını azaltmak ve her sınıfın kendi sorumlulukları altında çalışmasını sağlamak. Örneğimizden gidecek olursak vasıtalar için bir vasıta arayüzü tanımlıyoruz. Sonrasında bu vasıta arayüzünden araba, motosiklet ve bisiklet sınıflarını oluşturuyoruz.
Oluşturma sırasında kullanacağımız spesifik ArabaFabrikası, MotosikletFabrikası, BisikletFabrikası gibi sınıflarımız ve bu sınıflarımızın ortak kısımlarını oluşturacak Abstract Fabrika sınıfımızı oluştururuz, Son olarak bu Fabrika içerisine de alt fabrika sınıflarımızda kullanacağımız ortak methodları oluştururuz.
Not: Golang’de Mirassal Sınıf yapıları bulunmadığı için örneklendirmede farklı bir yol izlemiş bulunmaktayım. Öncelikle oluşturduğum dosyaları görelim.
Son Olarak Kullanımda Şu şekilde kullanabildik.
4. Abstract Factory Pattern:
Bu Design Pattern altında aynı işlemlerin farklı sistemler veya koşullar altında farklı sınıflar ile oluşturulmasını hedefliyor olmamız gerekir, Örneğin bir araç üreticisiyiz, Amerika ve Avrupa Piyasalarına araba ve motosiklet çıkartıyoruz. Bu durumda bu pattern bizim işimizi görecektir,
Fabrikamızda üretilecek ürünleri arayüzümüze ekledik.
Şimdi işin önemli kısmı olan ayrı fabrikaları oluşturduğumuz kısım geliyor. Fabrikaların kendi üretimlerini bir araya toparladık
Bundan sonrasında üretimi GenelFabrika Yapısı altından şu şekilde birleştirebiliriz.
Kullanım sırasında Farklı yollar olsada en kısasından şu şekilde üretebiliriz.
Bu sayede farklı sistemler veya kullanım alanlarında aynı türden nesneleri tek bir yerden üretebiliyoruz.
Herhangi bir yanlış aktarımım veya daha doğru bir yol öneriniz olursa lütfen yorum olarak bildiriniz
Alameddin Çelik