Abstract Factory Design Patterns – Soyut Fabrika Tasarım Şablonu

iPhone ve LG telefonlar için parça üreten bir fabrikanız olduğunu varsayalım. Bu fabrikada iPhone ve LG için ayrı şarj kablosu ve şarj cihazı üreteceksiniz.

abstract

Yukarıda ki UML incelendiğinde merkezi bir Factory interface sınıfının LgFactory ve iPhoneFactory alt interface sınıflarını oluşturduğunu görüyoruz. Sarj_Cihazi abstract sınıfın ise LG_Sarj_Cihazi ve iPhone_Sarj_Cihazi adında alt sınıfları oluşturarak farklı şarj cihazları üretilmesini sağlıyor. Usb_Kablo sınıfıda Lg_Usb_Kablo ve iPhone_Usb_Kablo alt sınıflarını oluşturarak farklı usb kabloların oluşturulmasını sağlıyor. Bunların hepsini ise kullanıcı hangi altsınıfların kullanılması gerektiğini bilmeden yapılmasını Abstract Factory Design Pattern dediğimiz bu yapı sağlıyor. Factory interface sınıfının alt sınıfları LG ve iPhone markalarına özel usb kablosu ve  şarj cihazlarını kullanıcının bilgisi olmadan üretilmesini sağlayacak.

Sarj_Cihazi abstract sınıfını kodladık. Yapıcı metodunda şarj cihazı modeli bilgisini alarak bilgi sahibi olacağız.

Yukarıda tanımladığımız Sarj_Cihazi sınıfını iphone ve lg için ürettiğimiz sınıflara miras olarak tanımladık.

Usb_Kablo sınıfı kodladık. Constructor(yapıcı) metot üzerinden kablo modeli bilgisine sahip olacağız.

Yukarıda Usb_Kablo sınıfının alt sınıflarını oluşturarak her marka için ayrı bir usb kablo sınıfı oluşturduk.

Factory interface sınıfı bir fabrikada yapılması istenen işlemler için olması istenen metotları tanımladık.

Yukarıda iPhone ve LG Factory interface alt sınıfları oluşturuldu. Bu sınıflar aracılığıyla her markanın sadece kendisine ait parçaların üretilmesi sağlanıyor.

Yukarıda FactoryMaker sınıfında ise talep edilen marka parametre olarak alınarak bu markaya ait Factory alt interface sınıfı döndürülüyor.

Client sınıfı ile istenilen markaya özel kablo ve şarj cihazı FactoryMaker sınıfı kullanılarak üretimi sağlanıyor ve ekran çıktıları alınıyor.

Test sınıfımızda ise sadece lg markasını yazarak kullanıcı arkada hangi sınıf ve alt sınıfların çalışacağını bilmeden aşağıda ki çıktıyı elde ediyoruz.

abstract-print


Java Developer

Yazıyı Paylaş

Recent Articles

Yorum Yaz

© 2021 Onur Arslan. Tüm Hakları Saklıdır. · RSS Yazıları · RSS Yorumları