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.
package designpattern.bridge;
public interface IEngine { public String startEngine(); } |
package designpattern.bridge;
public class ClassicEngine implements IEngine { @Override } |
package designpattern.bridge;
public class SportEngine implements IEngine { @Override } |
package designpattern.bridge;
public abstract class Car { private IEngine engine = null; private String carName = “”; public Car(String carName, IEngine engine) { public IEngine getEngine() { public void setEngine(IEngine engine) { public String getCarName() { public void setCarName(String carName) { public abstract void drive(); } |
package designpattern.bridge;
public class BMW extends Car { public BMW(String carName, IEngine engine) { @Override } |
package designpattern.bridge;
public class Audi extends Car { public Audi(String carName, IEngine engine) { @Override } |
package designpattern.bridge;
public class BridgeMain { public static void main(String[] args) { Car bmw = new BMW(“BMW”, new ClassicEngine()); bmw.drive(); } } |
Bu örneğimizde önce IEngine arayüzü ile birinci hiyerarşimizi oluşturuyoruz. Daha sonra ikinci hiyerarşiyi Car abstract sınıfı ile oluşturduk ve kendi içerisinde IEngine arayüzünü obje olarak kullanmaktadır. Son olarak main sınıfında ise bu değerleri dinamik olarak verdik. Özetleyecek ve tekrarlayacak olursak bridge design pattern ile iki hiyerarşi oluşturduk ve birbirilerini kullanmalarını sağladık.
Bol Java’ lı günler dileğiyle… 😀
No responses yet