Author: Uğur Uçar

Singleton Pattern

Nesne yaratma süreçleri ile ilgilenen son kalıbımız olan singleton pattern bu yazımızın konusu olacaktır. Singleton tasarım kalıbı en sık kullanılan kalıplardandır. Özellikle spring gibi dependency injection yönetimi yapan frameworklerin popülerliği arttıkça, farkında olmadan da kullandığımız bu kalıbın temelinde, bir sınıfa ait birden fazla nesne yaratılamaması prensibi yatmaktadır. Bu cümle size “O sınıfa ait tanımlı bir […]

Prototype Pattern

Bir başka creational, yani nesne yaratma süreçleriyle ilgilenen, tasarım kalıbımız olan prototype pattern, nesne kopyalama ihtiyaçlarımıza karşılık veren bir kalıptır. Tarihin eski dönemlerinde, henüz sanayileşme gerçekleşmemişken, üretim yapmak ustaların maharetine bakardı. Özellikle benzer nitelikte bir ürünü ortaya çıkarmak ciddi zaman alan bir iş idi. İnsanlık bir süre sonra bu tarz durumlara alternatif çözümler üretme arayışına […]

Builder Pattern

Nesne yaratma ile ilgilenen tasarım kalıplarımızdan builder pattern bu yazımızın konusu olacak. Bu tasarım kalıbımız nesne yaratması kompleksleşmiş sınıflarımız için elverişli bir kalıptır. Detaylara girmeden evvel belirteyim ki Lombok gibi projelerin sağladığı çözümler artık bu tasarım kalıbının uygulanmasını kolaylaştırmıştır. Her ne kadar bu kalıbı artık bir annotasyon seviyesinde uygulamak mümkün olsa da, o annotasyonun arkasında […]

Abstract Factory Pattern

Bir başka creational tasarım kalıbı olan abstract factory pattern, factory pattern şablonuna çok yakın bir yaklaşım ile oluşturulmuştur. Factory üzerine fazladan bir soyutlama katmanı ekleyerek, abstract factory patterni uygulamak mümkündür. Bu kalıp, birden fazla factory sınıfının bir arada bulunması ve uygulamanın hangi factory ile iş yapacağını belirlemesinin giderek zorlaştığı durumları ele alır ve çözer. Factory […]

Factory Pattern

Factory pattern en yaygın tasarım kalıplarındandır. Yapı itibari ile creational, yani obje yaratma süreçleriyle ilgilenen bir kalıptır. Benzer özellikleri taşıyan, ayrı obje türlerinin yaratılması esnasında, bu farklı objelerin yaratılma sürecinin, tüketici sınıf veya uygulama tarafından bilinmesinin gereksiz olduğu mantığı üzerine kurulu şekilde konumlanır. Bu kalıbı genel bir tanım ihtiyacı olduğunda ve bu tanımın detaylarının soyutlanması […]

Design Patterns

Yazılım geliştirme esnasında sıkça karşılaşılan sorunlar için, sıkça kullanılan çözümler vardır. Bunlar tıpkı bir şablon gibidir ve ilgili sorun ile ile karşılaşıldığında uygulanırlar. Bu çözümler döngüler, diziler gibi temel kavramlardan daha uzak, nispeten daha karmaşık yapılardır. Bu çözümler bir kütüphane gibi kullanabileceğiniz hazır yapılar olmaktan ziyade, fikir seviyesindedir ve haliyle soyuttur. Yazılımın özellikle mimarisini ilgilendiren […]

İstisna Yönetimi

Hatalar programlarımızın akışını kesen durumlardır. Bu durum bazen bilinçli, bazen de bilinçsiz şekilde karşılaşılabilen bir olgudur. Haliyle her ihtimal düşünülerek bunları yönetmek isteriz. Javada da bu yönetim için geliştirilmiş bir yaklaşım bulunmaktadır. 17 – Exceptions isimli projemizde bu konuyla ilgili örnekleri barındıracağız. Hatalar genel olarak olması beklenen bir durumun, farklı veya istenmeyen bir şekilde vuku […]

Inner Sınıflar

Inner sınıflar, önceki konularımızdan static yapılar içerisinde sözü geçmiş, fakat detayına değinmediğimiz yapılardandır. İsminden de çıkarım yapılabileceği gibi, inner sınıflar, sınıf içerisine yazılmış sınıflardır. 16 – Inner Classes isimli projemizle bu konuya değineceğiz. Erişim düzenleyiciler konusundan bildiğimiz üzere javada methodlara veya sınıflara farklı erişim seviyeleri tanımlamak mümkündür. Ancak br sınıf private olarak tanımlanamaz. Zaten private […]

Instanceof Sözcüğü

Instanceof sözcüğü javada iki tipi karşılaştırıp geriye true veya false değeri dönen bir anahtar sözcüktür. Konsept olarak bu operatör is-a ile oluşturulmuş soru cümlesinin cevabını verir. Solundaki nesnenin sağındaki yapının bir örneği olup olmadığını döner. (Is {sol taraf} a {sağ taraf}? – {sol taraf} bir {sağ taraf} mıdır?) 15 – Instanceof isimli projemiz içerisinde bu […]

Final Yapılar

Javadaki bir başka anahtar sözcük olan final, tıpkı static sözcüğü gibi, bir sınıfla, methodla, değişkenle veya bir field ile kullanabilen bir sözcüktür. Bu anahtar sözcük kullanılarak yapılan bir tanım sonradan değiştirilemez. Yani o tanım artık finalize edilmiş bir tanımdır. Buradaki “tanım” sözcüğü kapsamı geniş şekilde kullanılmıştır. Zira değişken, method ve sınıflarda tanımın finalize olması konuşma […]

Next Page »