软件设计模式的非软件例子(二)

news/2024/7/21 9:58:48
结构性模式--处理类与对象的组合
    结了构型这些例子工具、住宅配线、数学、节、零和银行业中找到。
适配器Adapter)举例
    模式一个口转户期一个使得于接容而起工作的一起工作。扳手一个的例个孔齿上齿的每尺寸同的美国型的边长为  1/21/4。显然,如果不使用一个适配器的话,1/2的棘齿不能适合  1/4的孔。一个1/2  1/4的适配器具有一1/2的阴槽来套上一1/2的齿,同时有一1/4的阳槽来卡1/4的扳手。
 
  6:使用扳手适配器例子的适配器对象图
 
 桥接Bridge)举例
    桥接模式将抽象部分与它的实现分离,使它们能够独立地变一个普通的开关控制的电灯、电风扇等等, 都是桥接的例开关的目的是将设备打开或关实际的开关可以是简单的双刀拉链开关也可以是调光开关。
 
 
 
 
  7:使用电子开关例子的桥接对象图
 
组合 Composite )例子
   组合模式将对象组合成树形结构以表 - 的层次结让用户一致地使用单个对象和组合对 子抽,但表达是组例子达式作数、操作符和操作。操 数可以是数字,也可以是另一个表达式 这样, 2+3 和( 2+3 + 4*6 )都是合法的表达式。
 
8 :使用算术表达式例子的组合模式对象图 
 
装饰(Decorator 举例
  式动一个加额职责幅画画框挂在但是是有画框 且实画框墙上。在挂在墙,画蒙上装到;这时画、玻璃画框 成了一个物体。
 
 
 
 
  9 :使 用有画框的画作为例子的装饰模式对象图
 
 
外观 Facade )举例
  式为中的义了一的次的以便使。当按照购时,则 体现了一个外观模消费者拨打一个号码与客服代表联系,客服代表则扮演了这外观他包含了与订货部、 收银部和送货部的接口。
 
 
 

 

10:使用电话订货例子的外观模式对象图

 
享元 Flyweight )举例
   享元模式使用共享技术有效地支持大量细粒度的对公共交换电话 PSTN 是享元的一个例有一些 如拨生器、振铃发生号接必须用户。当户拿打电时, 不需要知道使用了多少资源 对于用户而言所有的事情就是有拨号音,拨打号码,拨通电话。
 
 
 
 
  1 1 :使用拨号音发生器例子的享元模式对象图
 
代理 Proxy )模式
  代理模式提供一个中介以控制对这对象的访问。一张支票或银行存是账户中资金的代理。支在市场交 易中用来代替现金,并提供对签发人账号上资金的控制。
 
 
  12 :使用银行存单例子的代理模式对象图




http://www.niftyadmin.cn/n/3651859.html

相关文章

软件设计模式的非软件例子(三)

行为模式--描述类和对象怎样交互和怎样分配职责作者总结了十一种行为模式。这些模式可以在硬币分类银行、餐馆订餐、音乐、运输、汽车修理、自动售货机和家庭建筑中找到例子。职责链(Chain of Responsibility)举例职责链模式使得多…

KMP字符串模式匹配详解

个人觉得这篇文章是网上的介绍有关KMP算法更让人容易理解的文章了,确实说得很“详细”,耐心地把它看完肯定会有所收获的~~,另外有关模式函数值next[i]确实有很多版本啊,在另外一些面向对象的算法描述书中也…

用简单的实例来实践TDD的核心思想

TDD(Test Driven Development),核心思想就是以测试的方式来驱动开发,它对传统的软件开发流程做了一个有效的调整。TDD的目的主要是为了保证类是为了其所赋予的功能、职责而存在,另一方面也是为了保证避免过度设计&…

基于c语言实现的初级mail list(1) 通讯录,后续会有改进

https://github.com/frankRenlf/c_mailList_primary.git 增删改查排序均已实现, 后续将加入将mail list写入txt或者数据库来保存,进行功能完善 有问题可在评论指出,觉得还行就给个赞和关注吧 也可以关注这个系列,后续也会有更新,和其他代码产出

c语言 寻找奇数 and 寻找峰值

https://github.com/frankRenlf/c_dailyWork.git 两个代码都分装成函数,想测试直接调用即可.代码已放入链接 部分代码如下 void test1() {int n 0;while (~scanf("%d", &n)){int answer 0;int tmp 0;while (n--){scanf("%d", &tmp);answer ^ …

软件设计模式的非软件例子(一)

摘要本文Michael Duell 著&#xff0c;为Wu译&#xff0c;出自<<非程序员>>软件设计模式来源于 Christopher Alexander的建筑学模式和对象运动。根据Alexander的观点&#xff0c;模式就是一个对于特定的系统的通用解决方案本身的重复。对象运动关注于将现实世界模…

c语言 找对数(非暴力算法)

https://github.com/frankRenlf/c_dailyWork.git暴力求解&#xff1a;时间复杂度太高了。数比较大时&#xff0c;很耗费时间。只要算法学好,学什么语言都快step1: 在k0,countn*n;当k>0,step2: 在y的整数倍区间内&#xff0c;x符合条件的数量就是 (n / y) * (y - k)个n / y 表…

c语言 一步截取字符串

GitHub - frankRenlf/c_dailyWork 只需加入\0再输出字符串即可 #include<stdio.h> void test4() {char arr[100];int k 0;while (scanf("%s", arr) ! EOF){scanf("%d", &k);arr[k] \0;printf("%s\n", arr);} }int main() {//test1(…