【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】

如果说前面的工厂模式是对接口进行抽象化处理,那么建造者模式更像是对流程本身的一种抽象化处理。这话怎么理解呢?大家可以听我慢慢到来。以前买电脑的时候,大家都喜欢自己组装机器。一方面可以满足自己的个性化需求,另外一方面也可以在价格上得到很多实惠。但是电脑是由很多部分组成的,每个厂家都只负责其中的一部分,而且相同的组件也有很多的品牌可以从中选择。这对于我们消费者来说当然非常有利,那么应该怎么设计呢?

typedef struct _AssemblePersonalComputer
{void (*assemble_cpu)();void (*assemble_memory)();void (*assemble_harddisk)();}AssemblePersonalComputer;

对于一个希望配置intel cpu,samsung 内存、日立硬盘的朋友。他可以这么设计,

void assemble_intel_cpu()
{printf("intel cpu!\n");
}void assemble_samsung_memory()
{printf("samsung memory!\n");
}void assemble_hitachi_harddisk()
{printf("hitachi harddisk!\n");
}

而对于一个希望配置AMD cpu, kingston内存、西部数据硬盘的朋友。他又该怎么做呢?

void assemble_amd_cpu()
{printf("amd cpu!\n");
}void assemble_kingston_memory()
{printf("kingston memory!\n");
}void assmeble_western_digital_harddisk()
{printf("western digital harddisk!\n");
}

C语言和设计模式(建造者模式)相关推荐

  1. Python设计模式-建造者模式

    Python设计模式-建造者模式 代码基于3.5.2,代码如下; #coding:utf-8 #建造者模式 class Burger():name = ""price = 0.0d ...

  2. 说说设计模式~建造者模式(Builder)

    建造者模式是我的"设计模式"里创建型模式里的最后一篇,这种模式在实现中,很多架构都用到了,如MVC,MVP,MVVM,它们都是有建造者模式的精髓的,即,创建与表现分享,我们的MVC ...

  3. 设计模式 建造者模式_设计模式:建造者

    设计模式 建造者模式 有时需要在应用程序中创建一个复杂的对象. 一种解决方案是Factory模式,另一种是Builder设计模式. 在某些情况下,您甚至可以结合使用这两种模式. 但是在本文中,我想研究 ...

  4. C语言实现设计模式—模板模式

    文章目录 C语言实现设计模式-模板模式 模板模式介绍 UML用例说明 实际场景使用 框架结构[共用框架]-通用的串口协议分析函数 不同实现-数据类型区别 C语言实现设计模式-模板模式 模板模式介绍 在 ...

  5. 设计建造者模式java代码,Java设计模式-建造者模式

    定义 Separate the construction of a complex object from its representation so that the sameconstructio ...

  6. python创造者_python 设计模式-建造者模式

    问题:在上一篇python设计模式:抽象工厂模式中,我们尝试用抽象工厂模式规范化了 Pizza 原材料的供应以及 Pizza 的创建.但是我们忽略了一个问题,那就是每种 Pizza 的烘焙时间依赖于生 ...

  7. java设计模式-建造者模式

    概念:使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. ...

  8. 设计模式-建造者模式(转自:http://www.cnblogs.com/cbf4life/archive/2010/01/14/1647710.html)...

    11.1 变化是永恒的 又是一个周三,快要下班了,老大突然拉住我,喜滋滋地告诉我:"牛叉公司很满意我们做的模型,又签订了一个合同,把奔驰.宝马的车辆模型都交给我们公司制作了,不过这次又额外增 ...

  9. 大话设计模式—建造者模式

    建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 一个 Builder 类会一步一步构造最 ...

  10. 我的Java设计模式-建造者模式

    在未上大学之前,一直有个梦想"I have a dream!",就是能成为一位汽车工程师,一直幻想着开着自己设计的汽车飞奔在公路上,迷倒了万千少女.咳咳~~虽然现在没实现我的dre ...

最新文章

  1. JS+Canvas的棋盘游戏和Java的动态结合
  2. 创维 linux内核,Linux2.6内核在创维特jx2410平台上的移植四
  3. bat给文件追加换行内容
  4. python程序员一天写多少行代码-这个工具,30分钟居然把我一天的工作给干完了!...
  5. C#.NET常见问题(FAQ)-命名空间namespace如何理解
  6. java str2date,java date类与string类实例代码分享
  7. Objective-C中,ARC下的 strong和weak指针原理解释
  8. linux 下i2c读写命令,S3C2440 Linux下的I2C驱动以及I2C体系下对EEPROM进行读写操作
  9. flash.net.filereference php,as3与php 上传单个图片demo
  10. 掐头法和去尾法记音标
  11. 贺建奎给自己做了三次“基因编辑”:想当中国爱因斯坦,却变成生物狂人
  12. 帆软 动态改变填报数据库表;数据分析亦可用此方法
  13. springboot maven父项目脚手架
  14. Eclipse阿里云镜像源配置
  15. 使用Canvas绘制简单工程符号
  16. 线性方程组(四)- 矩阵方程
  17. 从qire123上抓取bdhd下载地址的firefox extension
  18. iOS11 如何防止用户录屏?
  19. 常见Andriod游戏破解搜索关键字
  20. QA - 有两种药片A和B,外观一样功效不同,每次需要吃一个A+B;拿出来2A+B,问该怎么吃?

热门文章

  1. Jenkins+maven(testng)项目(本地项目配置)
  2. STL泛型编程之map映照容器
  3. 项目管理中工时计算的问题
  4. Java高手需要注意的25个学习目标
  5. 2009.12.9.工作日记
  6. CCNA实验之------NAT实验配置(必考)
  7. GeoServer+PostgreSQL+PostGIS+pgRouting实现最短路径查询
  8. windows下监测tomcat7内存使用情况
  9. Linux 动态库剖析
  10. love2d杂记4--有用的辅助库