随笔分类 - 设计模式
摘要:用例图主要说明的是谁要使用系统,以及他们使用该系统可以做些什么,帮助开发团队以一种可视化的方式理解系统的功能需求。 一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示这些元素之间的各种关系,如泛化、关联和依赖。它展示了一个外部用户能够观察到的系统功能模型图。 1.用例图包含的元素 1. 参
阅读全文
摘要:在患者就医时,医生会根据病情开具处方单,很多医院都会存在以下这个流程:划价人员拿到处方单之后根据药品名称和数量计算总价,而药房工作人员根据药品名称和数量准备药品,如下图所示。 在软件开发中,有时候也需要处理像处方单这样的集合对象结构,在该对象结构中存储了多个不同类型的对象信息,而且对同一对象结构中的
阅读全文
摘要:相信大多数的人都看过《西游记》,对孙悟空拔毛变出小猴子的故事情节应该都很熟悉。孙悟空可以用猴毛根据自己的形象复制出很多跟自己一模一样的小猴兵出来,其实在设计模式中也有一个类似的模式,我们可以通过一个原型对象来克隆出多个一模一样的对象,这个模式就是原型模式。 一 大同小异的工作周报 M公司一直在使用自
阅读全文
摘要:现在在大力推行节约型社会,“浪费可耻,节俭光荣”。在软件系统中,有时候也会存在资源浪费的情况,例如,在计算机内存中存储了多个完全相同或者非常相似的对象,如果这些对象的数量太多将导致系统运行代价过高。那么,是否存在一种技术可以用于节约内存使用空间,实现对这些相同或者相似对象的共享访问呢?答案是肯定的,
阅读全文
摘要:相信大家都玩过类似于“斗地主”的纸牌游戏,某人出牌给他的下家,下家看看手中的牌,如果要不起,则将出牌请求转发给他的下家,其下家再进行判断。一个循环下来,如果其他人都要不起该牌,则最初的出牌者可以打出新牌。在这个过程中,纸牌作为一个请求沿着一条链在传递,每一位纸牌的玩家都可以处理该请求。在设计模式中,
阅读全文
摘要:树形结构在软件中随处可见,比如操作系统中的目录结构,公司组织结构等等,如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题。组合模式通过一种巧妙的设计方案来使得用户可以一致性地处理整个树形结构或者树形结构的一部分,也可以一致地处理树形结构中的叶子节点(不包含子节点的节点)和容器节点(包含
阅读全文
摘要:在现实生活中,我们常常会用到两种或多种类型的笔,比如毛笔和蜡笔。假设我们需要大、中、小三种类型的画笔来绘制12中不同的颜色,如果我们使用蜡笔,需要准备3*12=36支。但如果使用毛笔的话,只需要提供3种型号的毛笔,外加12个颜料盒即可,涉及的对象个数仅为3+12=15,远远小于36却能实现与36支蜡
阅读全文
摘要:在日常生活中,交通信号灯指挥者日益拥挤的城市交通。红灯亮,汽车停止;绿灯亮,汽车继续前行;在这个过程中,交通信号灯是汽车的观察目标,而汽车则是观察者。随着交通信号灯的变化,汽车的行为也会随之变化,一盏交通信号灯可以指挥多辆汽车。在软件系统中,有些对象之间也存在类似交通信号灯和汽车之间的关系,一个对象
阅读全文
摘要:编写基于另一组类的包装器接口是一项常见的API设计任务,例如,你的工作可能是维护一个大型的遗留代码库,相比重构所有代码,你更愿意审计一个新的 ,更简洁的API,以隐藏所有的底层遗留代码;或者你可能已经编写了一个C++API,后来需要给特定客户提供C接口;或者你的API用到了一个第三方依赖库,你想让客
阅读全文
摘要:一 普通工厂模式 1. 类图 2. 代码实现 #pragma once #include <iostream> using namespace std; // 抽象渲染类 class IRenderer { public: IRenderer() { cout << "IRenderer Const
阅读全文
摘要:控件类的实现原理:CTreeCtrl TreeCtrl = *(CTreeCtrl *)CTreeView; 实现条件:CTreeCtrl类中没有虚函数和成员变量 由于CTreeCtrl类中没有虚函数和新的数据成员,因此具有和基类CWnd一样的虚函数表和数据摆放
阅读全文
摘要:问题:相同的过程经过不同的处理方法得到不同的结果 注意: 1. 基类保护属性的使用(该属性在子类中同为保护属性,只能类的成员变量调用) 2. 公共属性和公共方法全放在基类 3. 泛化、依赖、组合关系的使用
阅读全文
摘要:1. 实质: 创建个全新的对象(将原型对象的属性全部传递给新对象),它们在内存中拥有新的地址, 对克隆产生的对象不会对任何原型对象产生影响,每个克隆对象都是相互独立的。 2. 通用克隆 3. 浅克隆和深克隆 4. 原型管理器设计
阅读全文
摘要:关联关系:A类实例化的时候需要B类的对象引用或指针作为参数 依赖关系:A类的某个方法使用B类,可能是方法的参数是B类或在方法中获得了一个B类的实例 某个类以成员变量的形式出现在另一个类中,二者是关联关系;某个类以局部变量的形式出现在另一个类中,二者是依赖关系。 聚合关系:弱关联,整体和部分可以独立存
阅读全文