Mediator Design Pattern

Merhaba değerli Java dostları, Bugün mediator design pattern hakkında bahsetmek istiyorum. Mediator design pattern ile amacımız birbirileri ile haberleşen bileşenler arasında esnek yapı sağlamaktır. En temel adım bileşenlerin direkt olarak birbirileri ile haberleşmelerini engellemektir. Mediator design pattern ile ara bir nesne kullanılır ve tüm bileşenler bu ortak nesne üzerinden haberleştir. Böylece bileşenler arasında sıkı bağ ortadan kaldırılmış olunur. Mediator design pattern için en güzel örneklerden birisini uçuş kontrol olarak verebiliriz. Uçuş kontrol sistemlerinde uçaklar birbirileri ile haberleşmez. Bunun yerine kule tüm uçuşlar arasında koordinasyonu sağlar. İşte mediator design pattern için gerçek bir gündelik problem. Örneğimize bakalım. package anajavatica.pattern.behavioral.mediator;public class Flight { Paylas    

Memento Design Pattern

Merhaba Java dostları, Bugün bir davranışsal tasarım şablonu olan memento design pattern hakkında yazmak istedim. Hemen hemen her şablonda olduğu gibi burada da önce kelime anlamına bakıyoruz. Memento kelime anlamı hatıra vb anlamlara gelmektedir. Dolayısıyla şöyle bir mantık yürütebiliriz. Bir sınıfın belli değerlerini başka bir yerde saklamak ve gerektiğinde tekrar yüklemek için kullanılır. Memento design pattern için en belirgin örnek olarak oyunları verebiliriz. Oyunda belirli bir noktaya kadar geldiğimizi ve bu noktada oyunu kaydettiğimizi düşünelim. İlerleyen aşamaları geçemedik ve oyuna yeniden başlamak yerine daha önceden kaydettiğimiz noktaya geri dönmek isteriz. İşte tam da memento design pattern için bir problem. Memento design pattern için birkaç terime değinmek istiyorum. Paylas    

Strategy Design Pattern

Merhaba değerli Java dostları, Bugünkü yazımda bir başka davranışsal tasarım şablonu olan strategy design pattern değinmek istiyorum. Bazen bir işlemi, bir amacı gerçeklemek için birden fazla yol veya alternatif olabilir. Bu alternatiflerden herhangi birisini dinamik olarak çalışma anında kullanmak isteyebiliriz. İşte bu noktada strategy design pattern devreye giriyor. Yapacağımız seçime göre strategy design pattern bizim için gerekli metotları tetikleyecektir. Aslında ilk bakışta strategy design pattern ile factory design pattern benzer görünebilir; ama aralarında grup farkı vardır. Yani, factory design pattern ile nesne oluşturmada karar süreci kullanılırken, strategy design pattern ile işlev seçiminde karar süreci kullanılır. Bundan dolayıdır ki strategy design pattern davranışsal grubuna girer. Lafı çok uzatmadan örneğimize geçelim. Aşağıdaki örnek oldukça basit. Birden, kullanıcının girdiği değere kadar olan sayıları topluyor. En basit yöntem ile bunu döngüsel bir işlem olarak kodlayabiliriz. Bir diğer ve daha şık yöntem ise matematikten bildiğimiz bir formül tek bir adımda bu işi halletmek. Seçim sizin… Paylas    

Observer Design Pattern

Merhabalar değerleri Java dostları, Bu yazımda observer design pattern değinmek istiyorum. Observer kelime anlamı olarak gözlemci olarak geçmektedir. Dolayısıyla basit bir mantık yürüttüğümüzde observer design pattern için; nesnelerin durumlarını gözlemlemek ve belli bir olay karşısında belirli işlemleri gerçekleştirmek olarak açıklama yapabiliriz. Genel mantığını toparlayacak olursam, observer design pattern; işlemlerin ve nesnelerin üzerinde meydana gelecek olaylardan haberdar olmak için kullanılır. Meydana gelen değişiklikte bağlı nesnelerin metotlarının tetiklenmesi temelde yatar. Observer design pattern en çok kullanıldığı alanlar arasında GUI componentler vardır. Örnek verecek olursak, bir butonun tıklandığında yapılacak işlemler için kullanılan yapı, bir observer design pattern örneğidir. Observer design pattern için bir diğer kullanım alanı ise MVC’ dir. Paylas    

State Design Pattern

Hepimiz mutlaka durum odaklı problemler ile karşı karşıya kalmışızdır. Yani bir nesne belirli durumlarda belirli işlemleri gerçekleştirip yine belirli bir yeni duruma geçer ve bu döngü uygulamanın süreci boyunca devam eder. Aslında ilk akla gelen bu durumların if – else veya switch – case yapıları ile sağlanmasıdır; fakat bu kontroller ile karmaşıklık artar ve bakım zorlaşır. Bunun yerine her durumun bir nesne haline getirilmesi ve uygun işlemleri tetiklemesi daha esnek ve sağlam bir mimari sunacaktır. Örneğimize bakalım. package anajavatica.pattern.behavioral.state;public interface IState { Paylas    

Visitor Design Pattern

Değerli Java dostları, Bugünkü yazımda visitor design pattern değinmek istiyorum. Aslında basit bir amacı var, o da şu; var olan sınıfların hiyerarşik yapılarını ve mevcut yapılarını değiştirmeden yeni metotlar eklemek. Yeni metotlarımız visitor sınıfı üzerinde tanımlanır ve mevcut sınıflar kendilerini bu visitor sınıfa parametre olarak aktarıp gerekli işlemleri yaparlar. Hemen örneğimize bakalım. package anajavatica.pattern.behavioral.visitor;public interface Place { Paylas    

Iterator Design Pattern
Tasarım Süreç & Modelleri / 28 Eylül 2015

Değerli Java dostları, bu yazımda iterator design pattern için örnek vermek istiyorum. Öncelikle iterator design pattern çok da yabancı olduğumuz konu değil diye düşünüyorum. Özellikle collection yapıları ile uğraşan arkadaşlar iterator design pattern ile daha önceden tanışmış olacaklar. Iterator design pattern için temel amaç elimizdeki veri yığını üzerinde ki bu array, list, stack vs olabilir, döngüsel işlemleri sağlayabilmek. Iterator design pattern için elimizde interface mutlaka olmalı ki ortak bir mimari sağlayabilelim. Array üzerinden iterator design pattern için örneğimize bakalım hemen. package anajavatica.pattern.behavioral.iterator;public class Notebook {private String name = “”; Paylas    

Command Design Pattern
Tasarım Süreç & Modelleri / 17 Eylül 2015

Merhabalar değerli Java dostları, Bugünkü yazımda bir başka şablon olan command design pattern anlatmak istiyorum. Öncelikle şunu belirteyim ki command design pattern, davranış sınıfına giren bir şablondur. Yani sınıflarınızın davranışı, işleyişi ile ilgili bir çözüm araıyorsanız command design pattern işinizi görebilir. İsterseniz önce örneğimize bakalım sonra da command design pattern ne için kullanılır sorusuna cevap arayalım. package anajavatica.pattern.behavioral.command;public abstract class Car { Paylas    

Chain of Responsibility Design Pattern
Tasarım Süreç & Modelleri / 22 Haziran 2015

Merhabalar değerli Java dostları, Yeni bir design pattern yazısı olan chain of responsibility ile karşınızdayım. Chain of responsibility ile amaç bir isteğin, sistem üzerinde uygun nesne bulunana kadar birden fazla nesne tarafından değerlendirilmesidir. Kullanıcı için tek bir interface vardır veya en azından bu şekilde olmalıdır. Böylece chain of responsibility ile kullanıcı arka planda gerçekleşen iletim sırasını ve işlemlerini bilmemektedir. Java ile çok kullanılan exception handling sistemi buna bir örnek olarak gösterilebilir. Hata uygun catch bloğuna düşene kadar başka bir catch bloğuna iletilir. Ayrıca içecek otomatını da örnek olarak düşünebiliriz. Atılan paranın ne kadar oluğunu anlamak için ardışık iletim yapılabilir. Chain of responsibility ile ilgili örneğe geçmeden önce bizim örneğimizde arabamızı servise ileteceğiz ve arka tarafı ile ilgilenmeyeceğiz. Bizim için servis işlemleri halledilecektir. package designpattern.chain;public class Car { Paylas    

Bridge Design Pattern
Tasarım Süreç & Modelleri / 15 Haziran 2015

Yepyeni bir tasarım şablonumuz daha var artık: Bridge design pattern. Her design pattern öğesinde olduğu gibi bridge design pattern için de temel amaç soyutlama yöntemi ile mimariler arasında esnek bağ sağlamaktır. En temel prensibimiz, yazılımın geliştirmeye ve genişletmeye açık; ama değişikliğe kapalı olmasıdır. Bridge design pattern’ in kilit noktası soyutlama sınıfları ile gerçekleyen sınıfların ayrı hiyerarşik yapıda olmasıdır. Her iki hiyerarşik yapıda bir üst sınıf vardır ve bu üst sınıflar birbirinden haberdardır. Dolayısıyla detaylar saklanmış olunur. İsterseniz hemen bridge design pattern ile ilgili örneğimize geçelim. Paylas