设计模式
文章平均质量分 80
成长中的C加加菜鸟
半路出家的努力向前的C++菜鸟
展开
-
组合模式及C++代码实现
理论学习: 在开发中,我们经常可能要递归构建树状的组合结构,组合模式则提供了很好的解决方案! 组合模式的标准定义:将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性!组合模式解耦了客户程序与复杂元素内部结构,从而使客户程序可以像处理简单元素一样处理复杂元素。(具体内涵解读请看下面的实例分析!)实例分原创 2014-04-30 17:58:05 · 874 阅读 · 0 评论 -
观察者模式及其实现
一,理论学习:1.什么叫观察者模式?定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖他的对象都得到通知并被自动更新!此模式通常用来实现事件处理系统。2.观察者模式的组成:2.1 观察者:观察者(例子中观察者为Subscribers)将自己注册到被观察者(例子中被观察者为Weather)中,被观察对象将观察者存放在一个容器(Container)里。 2.2原创 2014-05-22 21:54:42 · 958 阅读 · 0 评论 -
策略模式在简单的商场收费软件中的应用
一,理论学习:1.什么叫策略模式? 定义了一族算法,将每个算法分别封装起来,并相互之间可以替换。策略模式可以使算法的变化独立于使用算法的客户! 对于上面书上的标准定义总是说的比较简洁和深刻,不仔细琢磨还真让人有点摸不着头脑!个人通俗的理解如下:“策略”这个词顾名思义就是解决一个问题的方法!我们都知道一般来说解决一个问题有多种方法(策略),比如下面我写的这个例子,要解决商场对原创 2014-05-20 22:43:07 · 920 阅读 · 0 评论 -
适配器模式及C++代码实现
适配器模式:适配器模式是把一个类的接口变换成客户端所期待的另一种接口,使得原本接口不匹配而无法在一起工作的两个类能够在一起工作。比如学生下面自己写的例子中:我现在要使用一个已存在的名为Product类中的printf_result接口中的内容,但是由于我所需要的名为Product_Information接口与printf_result接口不一致,所以我无法使用Product_Information原创 2014-04-20 21:31:31 · 742 阅读 · 0 评论 -
模板方法模式在学生资格审查系统(升级版)中的应用和实现
一,理论学习: 在面向对象系统的分析与设计中可能会遇到这样的一种情况:对于某一个业务逻辑在不同的对象中有着不同的细节实现,但是业务逻辑的整体框架是相同的。比如下面我自己写的一个学生资格审查系统升级版(前面我在学习外观模式的时候写过学生资格审查系统),假设需求决定了审查高中生和审查大学生的整个审查流程是一模一样的,审查流程都是:审查姓名 -> 审查年龄 ->审查体重 -> 审查身高 ->原创 2014-05-14 22:16:51 · 663 阅读 · 0 评论 -
外观模式及其在简单的学生资格审查系统中的应用(C++实现)
一,理论学习: 在软件系统开发中经常会遇到这样的情况,你实现了一些接口,但是这些接口都分布在几个类中,比如下面我写的一个简单的学生入学资格审查系统中,查询学生姓名的接口在Name类中实现,审查年龄是否合格的接口在Age类中实现,审查体重是否达标的接口在Weight类中实现,审查身高是否达标的接口在Height类中实现,审查分数是否达标的接口在Score类中实现。假如现在我在客户端中需要实原创 2014-05-09 11:29:41 · 921 阅读 · 0 评论 -
桥接模式及C++代码实现
今天我在自学桥接模式,以下是学习桥接模式的心得:面向对象系统设计其实追求的目标也就两个:一是高内聚,二是松耦合。高内聚即模块内部的各组成元素之间的结合要紧密,松耦合即模块与模块之间的相互影响要尽量地小,也就是一个模块相对另一个模块的独立性要强,尽量不要出现“牵一发而动全身”的现象! 桥接模式就是讨论的系统的“松耦合”问题。桥接模式使用组合的方式将抽象和实现彻底地解耦原创 2014-04-20 21:21:43 · 895 阅读 · 0 评论 -
生成器模式及C++代码实现
生成器模式:生成器顾名思义就是生成对象的一种工具(器械),不过它和工厂模式不一样,生成器模式强调一步一步创建对象,并通过相同的创建过程可以获得不同结果的对象(这一点在具体实现中用多态),将对象的创建过程和这个对象的表示分离开来! 同样是讨论关于对象的创建问题,生成器模式和工厂模式到底有什么区别? 我认为生成器模式和工厂模式的区别在于:由于工厂模式对对象的创建是一步到位,所以生产原创 2014-04-20 21:26:17 · 1927 阅读 · 0 评论 -
工厂模式及C++代码实现
Factory顾名思义是工厂的意思,即生产对象的工厂。它解决的问题是对象的创建,将对象的创建进行封装,并且把对象的创建放到子类中实现。原创 2014-04-20 21:15:26 · 595 阅读 · 0 评论 -
原型模式及C++代码实现
原型模式: 原型模式提供的是自我复制的功能,就是说新对象的创建可以通过已有的对象进行创建!这里的原型其实本身就是“对象工厂”,因为它能够生产对象,在原型模式中新的对象都是对原型的一份拷贝!从自身复制自己创建新的对象。 原型模式的优点: 1.向客户隐藏制造新实例的复杂性。比如,下面我自己写的这个例子,在客户端代码main函数中,客户要制造一个新的对象时,客户只需调用名为原创 2014-04-20 21:35:54 · 761 阅读 · 0 评论 -
装饰者模式及C++代码实现
理论学习: 今天自学了装饰者模式,在面向对象设计和开发过程中,可能会经常遇到这种情况:我们需要为一个已经定义好的类添加新的职责(操作),通常情况下我们会定义一个新的类继承自我们已经定义好的类,这样的话就会带来一个问题!你想想假如我们每一次给定义好的类增加功能时都用继承的方式,那么如果我的功能比较多时,用于继承的类也就多了!这样做会很大程度上增加系统的复杂性!再者滥用继承还会使系统模块与模原创 2014-04-23 17:29:31 · 669 阅读 · 0 评论 -
运用装饰者模式用C++写的一个咖啡店收银系统
以下是学生运用装饰者模式用C++写的一个咖啡店收银系统。花费时间:两个晚上 + 一个上午代码量:1455行,是目前学生写的最长的一个程序!百分百原创!#include#includeusing namespace std;//抽象类,咖啡class coffee {public:virtual float dabei_cost()原创 2014-04-26 20:55:08 · 2323 阅读 · 1 评论 -
备忘录模式及C++实现
一,理论学习:1.什么是备忘录模式? GoF《设计模式》中对备忘录模式的定义是这样的:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态! 世界上本没有后悔药,但是我们在进行软件系统设计的时候要给用户后悔的权利,提供用户后悔药!备忘录模式顾名思义就是将一个对象某个时候的状态备个份,当用户后面需要返回这个状态时就原创 2014-05-27 22:12:59 · 1371 阅读 · 0 评论