Builder C - удобный инструмент для программирования на языке C
Builder – это паттерн проектирования, который используется для создания сложных объектов. Он позволяет создавать объекты с разными характеристиками, не заставляя пользователя заботиться о том, как эти характеристики должны быть установлены.
Основная идея паттерна Builder заключается в разделении процесса создания сложного объекта на отдельные этапы. Таким образом, каждый этап выполняется отдельно от других и предоставляет набор методов для установки соответствующих характеристик объекта.
Для реализации паттерна Builder необходимо создать класс Builder, который будет отвечать за процесс создания объекта, а также класс Director, который будет использовать Builder для конструирования объекта.
Пример кода на языке С:
#include
// класс Builder
typedef struct {
int id;
char name[50];
char address[100];
char phone[20];
} PersonBuilder;
// методы для установки характеристик объекта
void setPersonId(PersonBuilder* builder, int id) {
builder->id = id;
}
void setPersonName(PersonBuilder* builder, char* name) {
strcpy(builder->name, name);
}
void setPersonAddress(PersonBuilder* builder, char* address) {
strcpy(builder->address, address);
}
void setPersonPhone(PersonBuilder* builder, char* phone) {
strcpy(builder->phone, phone);
}
// класс Director
typedef struct {
PersonBuilder builder;
} PersonDirector;
// метод для создания объекта
PersonBuilder createPerson(PersonDirector* director, int id, char* name, char* address, char* phone) {
setPersonId(&(director->builder), id);
setPersonName(&(director->builder), name);
setPersonAddress(&(director->builder), address);
setPersonPhone(&(director->builder), phone);
return director->builder;
}
int main() {
// создание объекта
PersonBuilder person = createPerson(&(PersonDirector){}, 123, "John Smith", "123 Main Street", "(555) 555-5555");
// вывод информации о объекте
printf("Person Id: %d\n", person.id);
printf("Person Name: %s\n", person.name);
printf("Person Address: %s\n", person.address);
printf("Person Phone: %s\n", person.phone);
return 0;
}
В данном примере мы создали класс Builder - PersonBuilder, который содержит характеристики объекта (id, name, address, phone), а также методы для их установки (setPersonId, setPersonName, setPersonAddress, setPersonPhone).
Затем мы создали класс Director – PersonDirector, который использует PersonBuilder для создания объекта. Метод createPerson принимает параметры объекта и устанавливает их с помощью методов класса PersonBuilder.
В методе main мы создали объект PersonBuilder с помощью класса PersonDirector и его метода createPerson, установили его характеристики и вывели информацию о нем на экран.
Таким образом, паттерн Builder позволяет создавать сложные объекты с помощью разделения процесса создания на отдельные этапы и предоставления набора методов для установки характеристик объекта.