Builder Design Pattern: Karmaşık nesnelerin adım adım oluşturulmasını sağlar. Nesne oluşturma süreci, adım adım yönlendirilir ve nesne oluşturmayı karmaşık bir yapıdan ayırır. Builder design patterni, nesnelerin farklı bileşenlerinin aynı oluşturulma sürecini kullanarak farklı nesne varyasyonlarını oluşturmak için kullanışlıdır.
Örnek verecek olursak; bir bilgisayar nesnesi oluşturmak için Builder Design Patternini kullanalım. Bilgisayar classında, işlemci, RAM, depolama alanı gibi oluşturacak şekilde tasarlayalım.
public class Computer {
private String processor;
private Integer ram;
private Integer storage;
public void setProcessor(String processor) {
this.processor = processor;
}
public void setRam(Integer ram) {
this.ram = ram;
}
public void setStorage(Integer storage) {
this.storage = storage;
}
public void show() {
System.out.println("Processor: " + processor);
System.out.println("RAM: " + ram + " GB");
System.out.println("Storage : " + storage + " GB SSD");
}
}
public interface ComputerBuilder {
void buildProcessor();
void buildRam();
void buildStorage();
Computer getResult();
}
public class DesktopBuilder implements ComputerBuilder {
private Computer computer;
public DesktopBuilder() {
computer = new Computer();
}
@Override
public void buildProcessor() {
computer.setProcessor("Intel Core i7");
}
@Override
public void buildRam() {
computer.setRam(16);
}
@Override
public void buildStorage() {
computer.setStorage(512);
}
@Override
public Computer getResult() {
return computer;
}
}
public class ComputerAssembler {
private ComputerBuilder builder;
public ComputerAssembler(ComputerBuilder builder) {
this.builder = builder;
}
public void assembleComputer() {
builder.buildProcessor();
builder.buildRam();
builder.buildStorage();
}
}
public static void main(String[] args) {
// Builder Design Pattern
builderDesignPatter();
}
private static void builderDesignPatter() {
ComputerBuilder desktopBuilder = new DesktopBuilder();
ComputerAssembler assembler = new ComputerAssembler(desktopBuilder);
assembler.assembleComputer();
Computer desktop = desktopBuilder.getResult();
desktop.show();
}
Bu örnekte, Computer sınıfı, oluşturulacak bilgisayar nesnesini temsil etmektedir.. ComputerBuilder arayüzü, bu nesnenin parçalarını oluşturmak için methodları tanımladık. DesktopBuilder sınıfı, masaüstü parçalarını oluşturan somut bir builder sınıfıdır. ComputerAssembler sınıfı, builder nesnesini kullanarak bilgisayar nesnesinin nasıl oluşturulacağını gösterir. Main classında, builder design pattern kullanarak bir masaüstü bilgisayar oluşturup, sonuç gösteriyor. Bu örnek, builder design patternin karmaşık nesnelerin oluşturulması için nasıl kullanılabileceğini göstermiş olduk.