设计模式 --> (4)建造者模式

时间:2022-10-16 14:44:24

建造者(Builder)模式

  建造者(Builder)模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

  建造者模式包含一个抽象的Builder类,还有它的若干子类——ConcreteBuilder,关键是看指挥官Director,Director里面的方法Construct()其实包含了Builder指针或引用的形参,由客户端传入某个 ConcreateBuilder对象。由多态性可知,客户端传进来的ConcreteBuilder是谁,就调用谁的方法。

优点:

  1.隔离了构建的步骤和具体的实现,为产品的具体实现提供了灵活度。

  2.封装和抽象了每个步骤的实现,实现了依赖倒转原则。

  3.封装了具体的步骤,减少了代码的冗余。

缺点:

  1.要求构建产品的步骤(算法)是不能剧烈变化的,最好是不变的,这样就影响了灵活度。

具体代码:

// 建造者
class Builder
{
public:
virtual void buildPart1() = ;
virtual void buildPart2() = ;
}; //具体建造者1
class ConcreteBuilder1: public Builder
{
public:
void buildPart1() { cout << "用A构造第一部分" << endl; }
void buildPart2() { cout << "用B构造第二部分" << endl; }
}; //具体建造者2
class ConcreteBuilder2: public Builder
{
public:
void buildPart1() { cout << "用X构造第一部分" << endl; }
void buildPart2() { cout << "用Y构造第二部分" << endl; }
}; // 指挥者,注意其方法的参数是抽象建造者的指针
class Director
{
private:
Builder *m_pBuilder;
public:
Director(Builder *builder) { m_pBuilder = builder; }
void build()
{
m_pBuilder->buildPart1();
m_pBuilder->buildPart2();
}
};

客户使用方法:

int main()
{
Director d(new ConcreteBuilder1());
d.build();
return ;
}

参考:http://blog.csdn.net/wuzhekai1985

设计模式 --> (4)建造者模式的更多相关文章

  1. Java设计模式之建造者模式(Builder)

    前言: 最近一直在学习okHttp,也对其做了一些整理,okHttp和Retrofit结合大大加速我们的开发效率,源码里面采用了很多设计模式,今天我们来学习一下其中的设计模式之一建造者模式. 建造者模 ...

  2. C&num;设计模式&lpar;5&rpar;——建造者模式(Builder Pattern)

    一.引言 在软件系统中,有时需要创建一个复杂对象,并且这个复杂对象由其各部分子对象通过一定的步骤组合而成.例如一个采购系统中,如果需要采购员去采购一批电脑时,在这个实际需求中,电脑就是一个复杂的对象, ...

  3. 【GOF23设计模式】建造者模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]建造者模式详解类图关系 建造飞船 package com.test.Builder; public class AirShi ...

  4. C&plus;&plus;设计模式之建造者模式&lpar;三&rpar;

    4.引入钩子方法的建造者模式 建造者模式除了逐步构建一个复杂产品对象外.还能够通过Director类来更加精细地控制产品的创建过程.比如添加一类称之为钩子方法(HookMethod)的特殊方法来控制是 ...

  5. 乐在其中设计模式&lpar;C&num;&rpar; - 建造者模式&lpar;Builder Pattern&rpar;

    原文:乐在其中设计模式(C#) - 建造者模式(Builder Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 建造者模式(Builder Pattern) 作者:webabc ...

  6. 折腾Java设计模式之建造者模式

    博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...

  7. C&num;设计模式之四建造者模式(Builder Pattern)【创建型】

    一.引言 今天我们要讲讲Builder模式,也就是建造者模式,当然也有叫生成器模式的,英文名称是Builder Pattern.在现实生活中,我们经常会遇到一些构成比较复杂的物品,比如:电脑,它就是一 ...

  8. Java 设计模式之建造者模式(四)

    原文地址:Java 设计模式之建造者模式(四) 博客地址:http://www.extlight.com 一.前言 今天继续介绍 Java 设计模式中的创建型模式--建造者模式.上篇设计模式的主题为 ...

  9. GOF23设计模式之建造者模式

    GOF23设计模式之建造者模式 场景: 我们要建造一个复杂的产品.比如:神州飞船,Iphone.这个复杂的产品的创建.有这样的一个问题需要处理: 装配这些子组件是不是有个步骤问题? 实际开发中,我们所 ...

  10. java设计模式3——建造者模式

    java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...

随机推荐

  1. VC&plus;&plus;2013出现bug: 无法打开源文件&OpenCurlyDoubleQuote;stdafx&period;h”

    VC++2013出现bug: 无法打开源文件“stdafx.h” 1.首先需要把#include "stdafx.h"置于最头 2.在解决方案资源管理器中添加以下几个文件(附图下)

  2. MMORPG大型游戏设计与开发(规范)

    一件事如果没有规范.章法,那么做这件事起来往往会遇到许多难题,特别是在多人协作的时候,没有到规范通常让每个人多多少少都面临着头疼的困难.举个例子,多个人要做一桌美味的饺子,有买材料.做面皮.弄肉(菜) ...

  3. [Android Studio 权威教程]断点调试和高级调试

    好了开始写一个简单的调试程序,我们先来一个for循环 ? 1 2 3 4 5 6 7 8 <code class="language-java hljs ">for ( ...

  4. 关于Java异常和错误的几个问题

    1.Java中什么是Exception? 异常是Java传达给你的系统和程序错误的方式. 在java中,异常功能是通过实现比如Throwable,Exception,RuntimeException之 ...

  5. c&num;部分---用结构体的题目- &sol;&sol;请输入班级人数,输入每个人的学号,姓名,和语文分数、数学分数和英语分数(要求使用结构体)

    //请输入班级人数,输入每个人的学号,姓名,和语文分数.数学分数和英语分数(要求使用结构体), //求班级里两个语文分数是最高分的学生的所有信息:数学分数是最高分的两个学生的所有信息:英语平均分 建立 ...

  6. PHP 系统命令函数

    function execute($cmd) { $res = ''; if ($cmd) { if(function_exists('system')) { @ob_start(); @system ...

  7. js判断字符串是否包含指定的字符

    判断字符串是否包含指定字符是很常用的功能,比如说,注册时用户名限制不能输入"管理员",或者需要js判断url跳转链接是否包含某个关键词等-- <!DOCTYPE html&g ...

  8. iOS 16进制颜色转换10进制颜色

    +(UIColor *)colorWithHexString:(NSString *)coloStr{ //    检索  去下空格和换行 转成大写 NSString *cString = [[col ...

  9. Golang fmt包使用小技巧

    h1 { margin-top: 0.6cm; margin-bottom: 0.58cm; direction: ltr; color: #000000; line-height: 200%; te ...

  10. 逻辑回归 vs 决策树 vs 支持向量机(II)

    原文地址: Logistic Regression vs Decision Trees vs SVM: Part II 在这篇文章,我们将讨论如何在逻辑回归.决策树和SVM之间做出最佳选择.其实 第一 ...