MVCSHARP Ailesi ile yazılım geliştirmeye dair makaleler

Design Pattern(Java) Factory Method

Öncelikle DoFactory ' de en çok kullanılan tasarım deseni olarak geçmektedir. Factory adından da anlaşıldığı gibi 'Fabrika' olarak bilinen bu yazılım tasarımı , kalıtımsal ilişkileri olan nesnelerin üretilmesi amacıyla kullanılır.

Tabiri caizse nerde coklu nesne üretimi var ise yapacağın iş belli Factory uygulamak. Cunku bildiğiniz gibi design pattern kavramı OOP karmaşası icin uretilen tekniklerdir. Çoklu nesne oluşturulan senaryolarda da (Hele bu nesneler arasında bir ilişki söz konusu ise) karmasıklığın önlenebilmesi oldukca zorlaşır. Eee bide nesne üretmek ram için maliyetli bir iş olduğundan ve bunu sürekli her nesne icinde yapıyorsak bunun daha pratik ve prof bir yolu olmalı sorusunu kendimize sormalıyız.

 

Factory de ana amaç Client tarafının kafasına gore istediği nesneyi oluşturamamısıdır.
Oluşturmak istediği nesne nin referansını tasıyan bir method ile konusarak gerekli kuralları sağlayıp o sekilde oluşturmasıdır.

Bunun icin;

Kuralları belli bir oluşturucu Nesnem olmalı,bu nesnem kendisine gecirilen argüman ile ilgili nesne referansını taşıyan türü döndürmeli, simdi bu cumleden direkt sunu rahatlıkla anlayabiliyrouz, ihtiyacımız olan sey biraz polimorfik dusunmek,çok bicimli davranabilen bir yapı kurmalıyız çünkü oluşturmak istediğimiz asıl nesnelerin sayısı ve tipleri birbirinden farklı, ama bizim oluşturucu nesnemizle konuşabilmemiz icin oluşturucu nesnemize gecirdiğimiz parametre ile ilgili tip ne ise o tipi döndürmelidir.

Nesnelerin sayıları bizi ilgilendirmiyo ama cok bicimli bir yapı olabilmesi icin bu nesnelerin tiplerini bir şema altında toplamalıyız,ve oluşturucu nesnemizin geri döndürdüğü değer direk ilgili nesnenin referansını taşımalıdır.

2 çeşit olarak uygulanabiliyor bu yazılım tasarım kalıbı, bunlardan birincisi tek bir oluşturucu nesne'ye polimorfik dusunulerek tasarlanmış bir taşıyıcı referans görevini üstelemek , diğeri ise oluşturulmak istenen nesne kadar oluşturucu nesne tasarlanması

 

Bu makalede sadece 1.tekniği araştırıcaz.

Bir senaryoya ihtiyacımız var,
Tamam senaryomuz şu, bir kahve dukkanına gittik ve kasada çalışan arkadaş bize istediğimiz kahveyi modelini hazırlayarak sunuyor olsun. bu senaryoda biz yani kahveyi isteyen yanii müşteri laugh aslında client tarafıyız,  kasada calısan arkadas oluşturucu-hazırlayıcı aynı anlamda kullanalım , kahve ise oluşturmak istediğimiz nesne olsun.

Öncelikle Kahve Modellerini Bir Tip Altında Toplamalıyım ve tüm kahve modellerimin belirli operasyonlarıma uyması gereksin.
 

 

Coffe abstract

 

Bahsettiğimiz Polimorfik yapıyı tasarlamak icin tüm bu kahve modelleri aslında Kahvedir diyoruz. ve Coffe Base class ımızdan türetiyoruz.Ve Her Kahve Aslında Müşteriye Verileceği icin, abstract class ımıza basit bir Method Yazarak tüm kahvelerin bu operasyonu uygulamasını zorunlu kılıyoruz yani bir kuralımız var.

Coffe abstract

 

Şimde bize oluşturucu bir nesne gerekiyor yani kendisine verilen kahve modelini müşteriye sunan polimorfik bir yapı

Coffe abstract

Burdaki "Creator" aslında oluşturucu yani senaryomuza bağlı kalıcak olursak  kasa da duran arkadaş bize hangi kahveden iceceğimizi soruyor bizde cevabını verip arkadaştan kahveyi alıyoruz. Yani mutfaga gidip kendi kahvemizi kendimiz doldurmuyoruz. Çünkü bunu yapmamız karısıklığa sebeb olur her müsteri kafasına gore kahve dukkanın mutfagına girip kendi kahvesini kendisi yapardı.
 
Creator yani oluşturucu nesnemde yer alan CoffeFactory methodu kendisine gecirilen argüman a göre bize asıl ürünün referansını döndürmektedir.

 

Coffe abstract

 

ve kullanımıda oldukca basittir.

Coffe abstract

 Saygılarımla Semih Sipahi

Facebook Üzerinden Yorumlar