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

在以往的软件开发过程中,我们总是强调模块之间要低耦合,模块本身要高内聚。那么,可以通过哪些设计模式来实现呢?桥接模式就是不错的一个选择。我们知道,在现实的软件开发过程当中,用户的要求是多种多样的。比如说,有这么一个饺子店吧。假设饺子店原来只卖肉馅的饺子,可是后来一些吃素的顾客说能不能做一些素的饺子。听到这些要求的老板自然不敢怠慢,所以也开始卖素饺子。之后,又有顾客提出,现在的肉馅饺子只有猪肉的,能不能做点牛肉、羊肉馅的饺子?一些只吃素的顾客也有意见了,他们建议能不能增加一些素馅饺子的品种,什么白菜馅的、韭菜馅的,都可以做一点。由此看来,顾客的要求是一层一层递增的。关键是我们如何把顾客的要求和我们的实现的接口进行有效地分离呢?

其实我们可以这么做,通常的产品还是按照共同的属性进行归类。

typedef struct _MeatDumpling
{void (*make)();
}MeatDumpling;typedef struct _NormalDumpling
{void (*make)();
}NormalDumpling;

上面只是对饺子进行归类。第一类是对肉馅饺子的归类,第二类是对素馅饺子的归类,这些地方都没有什么特别之处。那么,关键是我们怎么把它和顾客的要求联系在一起呢?

typedef struct _DumplingReuqest
{int type;void* pDumpling;
}DumplingRequest;

这里定义了一个饺子买卖的接口。它的特别支持就在于两个地方,第一是我们定义了饺子的类型type,这个type是可以随便扩充的;第二就是这里的pDumpling是一个void*指针,只有把它和具体的dumpling绑定才会衍生出具体的含义。

void buy_dumpling(DumplingReuqest* pDumplingRequest)
{assert(NULL != pDumplingRequest);if(MEAT_TYPE == pDumplingRequest->type)return (MeatDumpling*)(pDumplingRequest->pDumpling)->make();elsereturn (NormalDumpling*)(pDumplingRequest->pDumpling)->make();
} 

C语言和设计模式(桥接模式)相关推荐

  1. Python设计模式-桥接模式

    Python设计模式-桥接模式 基于Python3.5.2,代码如下 #coding:utf-8class Shape():name = ""param = "" ...

  2. 【学习笔记】ABAP OOD设计模式 - 桥接模式

    ABAP OOD设计模式 - 桥接模式 整理转自-<SAP ABAP 面向对象程序设计(原则.模式及实践)> 桥接模式又称为桥梁模式,在程序开发中,采用不同的维度分解一系列对象,然后采用组 ...

  3. 跟着ZHONGHuan学习设计模式--桥接模式

    转载请注明出处! ! !http://blog.csdn.net/zhonghuan1992 全部配套代码均在github上:https://github.com/ZHONGHuanGit/Desig ...

  4. 2.设计模式-桥接模式

    文章目录 一.使用场景 二.实现方法 三.优势与劣势 四.经典案例 本文笔记来自于: 狂神的设计模式 桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构模型,又称为柄体( ...

  5. 设计模式--桥接模式(Bridge)

    设计模式–桥接模式(Bridge) 1.定义 桥接模式:将抽象部分与它的实现部分分离,使它们可以独立地变化. 2.实例 设想如果要绘制矩形.圆形.椭圆.正方形,我们至少需要4个形状类,但是如果绘制的图 ...

  6. linkin大话设计模式--桥接模式

    linkin大话设计模式--桥接模式 桥接模式是一种结构化模式,他主要应对的是:由于实际的需要,某个类具有2个或者2个以上维度的变化,如果只是使用继承将无法实现功能,或者会使得设计变得相当的臃肿.我们 ...

  7. 23种设计模式——桥接模式

    文章目录 23种设计模式--桥接模式 1.桥接模式概述 2.桥接模式结构 3.桥接模式的实现 4.桥接模式的注意事项和细节 23种设计模式--桥接模式 1.桥接模式概述 桥接模式介绍 桥接(Bridg ...

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

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

  9. 设计模式——桥接模式实验报告

    目录 设计模式--桥接模式实验报告 一.实验题目 二.所用模式结构视图 三.本实例类图 四.实例实现代码 1.抽象消息类 2.普通消息类 3.加急消息类 4.特急消息类 5.实现发送消息的统一接口: ...

  10. 结合JDK源码看设计模式——桥接模式

    前言: 在我们还没学习框架之前,肯定都学过JDBC.百度百科对JDBC是这样介绍的[JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Jav ...

最新文章

  1. 设计模式整理之简单工厂
  2. java swing事件机制_java SWing事件调用的两种机制
  3. 优秀HTML5网站学习范例:从“饥饿游戏浏览器”谈用户体验
  4. 孕妇可以在计算机教室待吗,电脑对孕妇有辐射吗?孕妇使用电脑的注意事项
  5. 字节跳动 设计模式 pdf_凭这份pdf我拿下了美团、字节跳动、阿里、小米等大厂的offer...
  6. js判断ipad还是安卓_JS判断客户端是否是iOS或者Android
  7. 将你一张表的值覆盖_精准度可达亚米级,山东“北斗一张网”向社会免费开放...
  8. MVC实战之排球计分(六)—— 使用EF框架,创建Controller,生成数据库。
  9. PKU 3013 Big Christmas Tree 最短路 spfa
  10. php 判断是否是16进制,如何求解16进制字符串的验证
  11. [deviceone开发]-土地销售App开源
  12. hbase shell基础和常用命令详解
  13. linux连接库参数-l,gcc编译时,什么时候需要用-l参数指明连接库?
  14. 防火墙和代理服务器之间有什么区别
  15. Hyper-v 实现与虚拟机共享文件夹
  16. C#串口开发案例:迈瑞血球分析仪
  17. 最短路径(加权有向图)
  18. 20行Python 代码批量抓取免费高清图片!
  19. iconfont在ie8下不显示图标问题
  20. Oracle 错误总结及解决方法

热门文章

  1. Python进阶:并发编程之Asyncio
  2. 关于Keil4 转到 Keil5以后的一些错误解决
  3. python学习如何从菜鸟到老手
  4. js通过jquery的jsonp跨域请求
  5. jquery的ajax用法
  6. shell输入输出重定向
  7. 软工实践项目课程的自我目标
  8. 基于Flask框架的Python web程序的开发实战 二 项目组织结构
  9. python 连接MS sql server2005数据库
  10. PHP安全新闻早8点_1127