Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me

Design Pattern - Builder



  April 19, 2019    Labels:,,,,,,,, 

Bu patern ile kendi içerisinde alt parçalar barındıran karmaşık nesnelerin yaratılışındaki problemlere çözüm getirilmiştir. Yazılım sistemlerinde alt parçalardan oluşan ve bu parçalara göre değişik biçimler alabilen nesneler var olabilmektedir. Bu nesnelerin yaratılması karmaşık ve problemli bir iştir. Bu patern ile bu durumda karşılaşılabilecek problemlere çözüm getirilmiştir ve bir standart oluşturulmuştur.
Örneğin evimizde kullandığımız bilgisayarlar böyle nesnelere örnek gösterilebilir. Bilgisayarlar ihtiyaç duyulan özelliklere göre farklı alt parçalardan oluşur. Bilgisayarlarımızda ses işiyle uğraşan biri için çok gelişmiş bir ses kartı bulundurabildiği gibi, video işiyle uğraşan biri için gelişmiş bir ekran kartı bulunabilir. Bu örnekte olduğu gibi ihtiyaca göre nesneyi oluşturan yapı builder pattern'nıdır.

Uygulama
  • Bir builder internface'i ile farklı nesneleri build edecek sınıflar için bir arayüz oluşturulur. Bu interface'in bir build metodu olur.
  • Oluşturulacak her nesne için bir build sınıfı oluşturulur ve builder interface'i implement edilir. Bu build sınıfı ile nesne ve onun alt parçaları oluşturulur.
  • Bir director sınıfı oluşturularak builder üzerinden nesne yaratılması yönetilir.


public class Client{

     public static void main(String []args){
        Builder builder1 = new Builder1();
        Director.constructor(builder1);
        Object1 obj1 = builder1.getObject();
        Builder builder2 = new Builder2();
        Director.constructor(builder2);
        Object1 obj2 = builder2.getObject();
     }
}

public class Object1 {
    private ArrayList<String> parts = new ArrayList<>();
    
    public void add (String part) {
        parts.add(part);
    }
}

public class Director {
    public static void constructor (Builder builder) {
        builder.buildPart();
    }
}

public interface Builder {
    public void buildPart();
    public void getObject();
}

public class Builder1 implements Builder {
    private Object1 obj = new Object1();
    
    public void buildPart() {
        obj.add("özellik3");
        obj.add("özellik1");
    }
    
    public void getObject () {
        return obj;
    }

public class Builder2 implements Builder {
    private Object1 obj = new Object1();
    
    public void buildPart() {
        obj.add("özellik1");
        obj.add("özellik2");
    }
    
    public void getObject () {
        return obj;
    }
} 

No comments:

Post a Comment