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 {

private int type = CAR_TYPE_AUDI;

public static final int CAR_TYPE_AUDI = 1;

public static final int CAR_TYPE_BMW = 2;

public Car(int type) {
setType(type);
}

public int getType() {
return type;
}

public void setType(int type) {
this.type = type;
}

}

package designpattern.chain;public abstract class CarService {

private CarService nextService = null;

public CarService getNextService() {
return nextService;
}

public void setNextService(CarService nextService) {
this.nextService = nextService;
}

public abstract void repairCar(Car car);

}

package designpattern.chain;public class BMWService extends CarService {

@Override
public void repairCar(Car car) {
if (car.getType() == Car.CAR_TYPE_BMW)
System.out.println(“BMW car repaired”);
else {
if (getNextService() != null)
getNextService().repairCar(car);
}
}

}

package designpattern.chain;public class AuidService extends CarService {

@Override
public void repairCar(Car car) {
if (car.getType() == Car.CAR_TYPE_AUDI)
System.out.println(“Audi car repaired”);
else {
if (getNextService() != null)
getNextService().repairCar(car);
}
}

}

package designpattern.chain;public class ServiceManager {

private CarService bmwService = new BMWService();
private CarService audiService = new AuidService();

public ServiceManager() {
bmwService.setNextService(audiService);
}

public void repairCar(Car car) {
bmwService.repairCar(car);
}

}

package designpattern.chain;public class ChainMain {

public static void main(String[] args) {

Car bmw = new Car(Car.CAR_TYPE_BMW);
Car audi = new Car(Car.CAR_TYPE_AUDI);

ServiceManager serviceManager = new ServiceManager();

serviceManager.repairCar(bmw);
serviceManager.repairCar(audi);

}
}

 

Umarım chain of responsibility ile ilgili bu yazım faydalı olmuştur.

Bol Java’ lı günler dileğiyle… 😀

No responses yet

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.