C++ Builder Pattern Template

3 min read Jul 01, 2024
C++ Builder Pattern Template

C++ Builder Pattern Template

Pola desain Builder merupakan salah satu pola desain creational yang berguna untuk membangun objek kompleks secara bertahap. Pola ini memungkinkan Anda untuk memisahkan proses konstruksi objek dari representasi objek itu sendiri. Dalam C++, implementasi Builder Pattern bisa disederhanakan dan diperkuat dengan menggunakan template.

Implementasi Builder Pattern Template

Berikut ini contoh implementasi Builder Pattern template dalam C++:

#include 

template 
class Builder {
public:
  virtual ~Builder() {}
  virtual void reset() = 0;
  virtual void setPartA(const T& partA) = 0;
  virtual void setPartB(const T& partB) = 0;
  virtual void setPartC(const T& partC) = 0;
  virtual T getProduct() const = 0;
};

template 
class ConcreteBuilder : public Builder {
private:
  T product;

public:
  void reset() override { product = T(); }
  void setPartA(const T& partA) override { product.partA = partA; }
  void setPartB(const T& partB) override { product.partB = partB; }
  void setPartC(const T& partC) override { product.partC = partC; }
  T getProduct() const override { return product; }
};

struct Product {
  int partA;
  int partB;
  int partC;
};

int main() {
  ConcreteBuilder builder;
  builder.reset();
  builder.setPartA(10);
  builder.setPartB(20);
  builder.setPartC(30);

  Product product = builder.getProduct();
  std::cout << "Part A: " << product.partA << std::endl;
  std::cout << "Part B: " << product.partB << std::endl;
  std::cout << "Part C: " << product.partC << std::endl;

  return 0;
}

Dalam contoh ini:

  • Builder adalah kelas template yang mendefinisikan interface untuk membangun objek Product.
  • ConcreteBuilder adalah kelas template yang mengimplementasikan interface Builder dan mendefinisikan bagaimana objek Product dikonstruksi.
  • Product adalah struktur yang merepresentasikan objek kompleks yang akan dibangun.

Keuntungan Builder Pattern Template

  • Kode yang lebih ringkas: Template membantu mengurangi duplikasi kode dengan memungkinkan Anda untuk membuat kelas Builder yang dapat digunakan dengan berbagai jenis Product.
  • Fleksibel: Anda dapat dengan mudah menambahkan atau mengubah bagian-bagian dari objek Product tanpa harus mengubah implementasi kelas Builder.
  • Keamanan: Builder Pattern membantu menjamin bahwa objek Product akan dikonstruksi dengan benar dan konsisten.

Kesimpulan

Builder Pattern Template merupakan solusi yang efektif untuk membangun objek kompleks dalam C++. Dengan menggunakan template, Anda dapat membuat Builder Pattern yang lebih mudah diterapkan, fleksibel, dan dapat digunakan kembali.