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 objekProduct
.ConcreteBuilder
adalah kelas template yang mengimplementasikan interfaceBuilder
dan mendefinisikan bagaimana objekProduct
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.