« Return to Thread: Java Tasarim Sablonlari Kitabi

Re: Java Tasarim Sablonlari Kitabi

by Alp Timurhan Çevik :: Rate this Message:

Reply to Author | View in Thread

Yorumunuza katılamıyorum, singleton veya diğer patternların herhangi biri
ile ilgili sistemin içerisinde nerede nasıl bir rol alacağı ile ilgili bir
tanıma rastlamadım.

Global data olarak kullanımdan kastınız, anladığım kadarıyla singleton un
içerisinde veri tutulması ve bu verinin kullanılması senaryosu ile ilgili.
Singletonun sadece içerisinde veri tutaiblecek bir sınıf olarak düşünmek
yerine, çoğu zaman service sınıfı olarak kullanılacak bir nesnede kullanımı
düşünmek daha uygun olacaktır.

Ayrıca, singletonun high coupled olarak tasarımın merkezine oturması gibi
bir problem, eğer problem ise (sistemin tümünün birbirine highly coupled
olması ile bir yada birkaç parçaya coupled olması arasında fark olduğu
kanaatindeyim, bu durumda katmanların veya birimlerin kendi içlerinde olan
bir bileşene bağlılığı her zaman rahatsız etmeyebilir) tasarımın bu şekilde
yapılmasından ötürü problemdir. Bu tasarım, pek tabii singleton
kullanılmadan normal nesnelerle de böyle yapılabilir, tek fark, instance
sayısının birden çok olacağıdır. Buradaki coupling işlemindeki problemin de
aslında tek bir instancea referans vermek değil, o sınıf tanımına referans
vererek sınıfın değiştirilebilmesinin zorlaştırılmasına sebep olduğu
kanaatindeyim. Dependency Injection da çoğu senaryoda objeleri oluştururken
singleton olarak oluşturulur, runtime da objenin proxysini oluşturarak bu
proxyi singleton şeklinde kullanır. Burada DI kullanılmayan senaryo ile DI
kullanılan senaryo arasındaki tek fark, kullanılmayan senaryoda sınıf
kodunun singleton olarak yazılması, çağrılarında DI dan değil direk kod
içerisinden yapılmasıdır.

Sonuç olarak, herhangi bir patternin antipattern olması için o patternin var
olması yeterli sebep değildir, aynı zamanda yanlış kullanılması da
gerekmektedir. Singletonun tüm kullanımları yanlıştır yaklaşımına
katılmıyorum. Aslına bakarsanız, singletonun en basit patternlardan birisi
olarak, sadece tek bir instancea sahip olmayı zorlamak dışında pek de bir
kabiliyeti olmayan bir patterndir, ateş olsa cürmü kadar yer yakar.
Singleton a daha fazla görev yükleyip (tabii ki obje olarak singleton bir
objenin daha fazla görevi olacaktır, kastım singleton tanımı) aslında ona
ait olmayan özelliklere ona koymak özellikle karşılıklı iletişimde ciddi
anlaşmazlıklara sebep olacaktır.

İyi çalışmalar,
Alp Timurhan Çevik

Not: Kitap için tebrikler. Özellikle ticari olarak riskli ve cesaret
gerektiren bir çalışma, sektöre çok katkısı olacaktır. Genel çoğunluk kitap
okumaktansa interneti tercih ediyor, ne yazıkki özellikle bizim alanımızdaki
kişiler. Şu an için net rakam ortaya çıkmayacak olsa bile ilerleyen
zamanlarda kitap satış rakamları ile ilgili bilgi almak isterim, kişiler bu
ihtiyaçlarının farkında mı sorusuna cevap verebilmek için.

On Tue, Sep 2, 2008 at 11:09 AM, cihat altuntas <mcaaltuntas@...>wrote:

>   .Aslında bence problem hem nesnenin bu sorumluluğu kendi yönetmesi hemde
> global data olarak kullanılması . Doğal olarak tüm uygulamanın bu nesneye
> bağımlı olması.Ayrıca  uygulamanın test edilmesini zorlaştırmasını da
> ekleyebiliriz.
>
>  Sorumluluğu nesneden alınmasını Dependency Injection,Service Locator...
> ile halledebiliriz. Bu şekilde bağımlılığı ve azaltmış ve test işlemlerini
> kolaylaştırmış oluruz.Bu soruna kısmen bir çözüm getirsede global olarak bir
> sınıfa bağımlılığı yinede ortadan kaldırmıyor.DI ile de alsak interface
> kullansak bile yinede bu sınıfa ya da arayüze bağımlı oluyoruz.
>
> Bence yoğun olarak singleton kullanana projelerin tasarım olarak gözden
> geçirilmesi gerekir.Bu yüzden Design Pattern kitabı yazanlarında Singletonun
> gözü kapalı olarak kullanılmaması ve kullanıldığında ne gibi problemlere yol
> açabilir bunlardan bahsetmesi gerekir.Anti-Pattern olarak belirtilmesini
> söylmem bu yüzden.
> --- On *Tue, 9/2/08, Cenk Civici <ccivici@...>* wrote:
>
> From: Cenk Civici <ccivici@...>
> Subject: Re: [YazMuhTR] Java Tasarim Sablonlari Kitabi
> To: YazilimMuhendisligiTurkiye@...
> Date: Tuesday, September 2, 2008, 10:19 AM
>
>  Singleton neden bir antipattern?
> Problem objenin tek bir instance a sahip olma sorumlulugunu kendisinin
> yonetmesi mi?
> Bu sorumluluk baska bir objeye ornegin Factory objelerine delege
> yuklendigi zaman problem cozuluyor mu?
>
> Iyi calismalar
> Cenk Civici
>
> --- In YazilimMuhendisligi Turkiye@yahoogro ups.com<YazilimMuhendisligiTurkiye%40yahoogroups.com>,
> cihat altuntas
> <mcaaltuntas@ ...> wrote:
> >
> > Keþke Singleton'ý koymasaydýn ya da Anti-Pattern olarak koysaydýn :)
> Bu arada kitabýn hayýrlý olsun..
> >
> > --- On Tue, 9/2/08, Oezcan Acar <acar@...> wrote:
> > From: Oezcan Acar <acar@...>
> > Subject: [YazMuhTR] Java Tasarim Sablonlari Kitabi
> > To: YazilimMuhendisligi Turkiye@yahoogro ups.com<YazilimMuhendisligiTurkiye%40yahoogroups.com>
>
> > Date: Tuesday, September 2, 2008, 1:57 AM
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > Degerli arkadaslar,
> >
> >
> >
> > son calismam, Java Tasarim Sablonlari ve Yazilim Mimarileri isimli
> kitabim Pusula tarafindan yayimlanmistir.
> >
> >
> >
> > Islenen Konular:
> >
> >
> >
> > • Interface ve Abstract Sýnýflar
> >
> > • Tasarým Þablon Çeþitleri
> >
> > • Oluþturucu Tasarým Þablonlarý
> >
> > • Yapýsal Tasarým Þablonlarý
> >
> > • Davranýþsal Tasarým Þablonlarý
> >
> > • JEE Tasarým Þablonlarý
> >
> > • Yazýlým Mimarisi
> >
> > • Spring ile Tasarým Mimarisi
> >
> >
> >
> > Tematize edilen tasarim sablonlari (Design Patterns) söyledir:
> >
> >
> >
> > - Abstract Factory (soyut fabrika)
> >
> > - Builder (inþaatçi)
> >
> > - Factory Method (fabrika)
> >
> > - Prototype (prototip)
> >
> > - Singleton (yanlýzlýk)
> >
> > - Adapter - Bridge (köprü)
> >
> > - Facade (cephe)
> >
> > - Decorator (dekotatör)
> >
> > - Composite (kompozit)
> >
> > - Flyweight (sinek siklet)
> >
> > - Proxy (vekil)
> >
> > - Command (komut)
> >
> > - Memento (hatýra)
> >
> > - Strategy (strateji)
> >
> > - Iterator (tekrarlayýcý)
> >
> > - State (durum)
> >
> > - Chain Of Responsibility (sorumluluk zinciri)
> >
> > - Mediator (aracý)
> >
> > - Observer (gözlemci)
> >
> > - Template Method (þablon metot)
> >
> > - Visitor (ziyaretçi)
> >
> > - MVC
> >
> > - Data Access Object
> >
> > - Front Controller
> >
> > - Business Delegate
> >
> > - Intercepting Filter
> >
> > - Service Locator
> >
> >
> >
> > Tasarim sablonlarinin nasil uygulandigi birer Java örnegiyle
> gösterilmistir. Bunun yanisira Interface ve Abstract siniflarin
> kullanimi ve tasarim prensipleri hakkinda bilgi edinmek mümkündür.
> >
> >
> >
> > Ilgi duyanlar kitabi Internet üzerinde asagida yeralan shoplardan
> temin edebilirler.
> >
> >
> >
> > HepsiBurada. com
> >
> > http://www.hepsibur ada.com/productD etails.aspx? CategoryId=
> 211652&productId =kpusula177
> >
> >
> >
> > EStore.com
> >
> > http://www.estore. com.tr/ESTORE/ Products. aspx?catalog=
> Kitap&productid= KTI34714(7000000)
> >
> >
> >
> > IdeeFixe.com
> >
> > http://www.ideefixe .com/kitap/ tanim.asp? sid=C12CV6B6VT6T QAGZISIC
> >
> >
> >
> > Kitabin ismi: Java Tasarim Sablonlari ve Yazilim Mimarileri
> >
> > ISBN: 978-9944-711- 14-2
> >
> > 1. Baski Mayis 2008
> >
> > http://www.pusula. com
> >
> >
> >
> > Bilginize.
> >
> >
> >
> > Saygilarimla
> >
> >
> >
> > --
> >
> >
> >
> > ____________ _________ ______
> >
> >
> >
> > Özcan Acar, Dipl. Inf(FH)
> >
> > Vorstand
> >
> > Smart Web Business AG
> >
> >
> >
> > Im Niederfeld 8
> >
> > 65462 Gustavsburg
> >
> >
> >
> > +49 171 57 33 66 5
> >
> > acar@unitedinter. net
> >
> >
> >
> > --
> >
> > Mit freundlichen Grüßen
> >
> >
> >
> > ____________ _________ ______
> >
> >
> >
> > Özcan Acar, Dipl. Inf(FH)
> >
> > Vorstand
> >
> > Smart Web Business AG
> >
> >
> >
> > Im Niederfeld 8
> >
> > 65462 Gustavsburg
> >
> >
> >
> > +49 171 57 33 66 5
> >
> > acar@unitedinter. net
> >
>
>
>  
>

 « Return to Thread: Java Tasarim Sablonlari Kitabi