如何建自己网站做淘宝客,网络运营外包托管,ps做网站原形,北京好的网站设计公司基本概念
建造者模式是一种创建型设计模式#xff0c;它允许你创建复杂对象的过程独立于该对象的组成部分以及它们的组装方式。这样可以构造出不同的对象表示。
在建造者模式中#xff0c;将创建对象的过程和对象的表示分离#xff0c;通过一步步的构建#xff0c;可以得…基本概念
建造者模式是一种创建型设计模式它允许你创建复杂对象的过程独立于该对象的组成部分以及它们的组装方式。这样可以构造出不同的对象表示。
在建造者模式中将创建对象的过程和对象的表示分离通过一步步的构建可以得到不同的对象。
建造者模式需要实现以下结构
指挥者Director负责使用建造者对象构建最终的复杂对象它不关心具体的构建过程。建造者Builder定义了构建复杂对象各个部分的接口。具体建造者Concrete Builder实现了建造者定义的接口。产品Product表示被构建的复杂对象。
使用场景
构建过程比较复杂时。构建过程需要独立于对象的组成部分以及它们的装配方式时。构建过程中的一些步骤是可选的或可变的时。构建的对象需要具有不同的表现形式时。需要将构建过程封装在一个独立的组件中时。
实现
使用建造者模式创建一个对话框的例子如下
// 具体建造者Concrete Builder
class DialogBuilder {
public:DialogBuilder() : dialog(new QDialog) {}void setTitle(const QString title) {dialog-setWindowTitle(title);}void setMessage(const QString message) {QLabel* label new QLabel(message);layout.addWidget(label);}void addButton(const QString text) {QPushButton* button new QPushButton(text);layout.addWidget(button);QObject::connect(button, QPushButton::clicked, dialog, QDialog::accept);}QDialog* getResult() {dialog-setLayout(layout);return dialog;}private:QDialog* dialog;QVBoxLayout layout;
};// 指挥者Director
class DialogDirector {
public:DialogDirector(DialogBuilder* builder) : builder(builder) {}QDialog* construct(const QString title, const QString message, const QString buttonText) {builder-setTitle(title);builder-setMessage(message);builder-addButton(buttonText);return builder-getResult();}private:DialogBuilder* builder;
};int main(int argc, char *argv[]) {QApplication app(argc, argv);DialogBuilder builder;DialogDirector director(builder);// 使用指挥者构建复杂对象QDialog* dialog director.construct(Title, Message, OK);dialog-show();return app.exec();
}这个例子省略了抽象的建造者可以创建出qt对话框。