设计模式
文章平均质量分 88
walkerkalr
学无止境,梦想不止
展开
-
设计模式C++实现——装饰者模式
模式定义: 装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 装饰者和被装饰者有相同的超累类型。 可以用一个或多个装饰者包装一个对象。 既然装饰者和被装饰者对象有相同的超累类型,所以在任何需要原始对象(被包装的)的场合,可以用装饰过的对象代替它。 装饰者可以委托被装饰者原创 2014-06-05 16:02:52 · 2269 阅读 · 0 评论 -
设计模式C++实现——观察者模式
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 观察者模式结构图如下: 举例: 气象系统有三个部分分别是气象站(获取实际气象数据的物理装置),WeatherData对象(用来追踪来自气象站的数据,并更新布告板)和布告板(显示目前天气状况给用户看)。Weather原创 2014-06-04 19:51:17 · 2903 阅读 · 1 评论 -
设计模式C++实现——策略模式
策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 策略模式UML图如下: 举例: 游泳池中有不同种类的鸭子,有绿头鸭,红头鸭,橡皮鸭,木头鸭等。不同鸭子的特征或行为不同。绿头鸭(MallardDuck)可以叫声是“quack”,会飞;橡皮鸭叫声是“queak”,不会飞;木头鸭不会叫,原创 2014-06-04 15:32:05 · 10493 阅读 · 8 评论 -
设计模式C++实现——迭代器模式
模式定义 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 迭代器模式让我们能游走于聚合内的每一个元素,而又不暴露其内部的表示。把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。模式结构: Iterator:迭代器定义访问和遍历元素的接口 Conc原创 2014-06-12 12:59:55 · 1808 阅读 · 0 评论 -
读Head First设计模式小结
设计原则:1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起2.针对接口编程,而不是针对实现编程3.多用组合,少用继承4.为交互对象之间松耦合设计而努力5.类应该对扩张开放,对修改关闭6.要依赖于抽象类,不要依赖于具体类7.最少知识原则:只和你的密友谈话8.好莱坞原则:别调用我们,我们会调用你9.一个类应该只有一个引起变化的原因原创 2014-05-29 19:45:44 · 961 阅读 · 0 评论 -
设计模式C++实现——状态模式
模式定义 状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。模式结构:举例: 一个工人一天的时间分为上班,睡觉,干其他事情三个时间段。我们可以用状态模式来表示一天中在干什么事情。UML设计: 编程实现及执行结果:#include using namespace std;class Worker; //类原创 2014-06-12 18:47:39 · 1202 阅读 · 0 评论 -
设计模式C++实现——组合模式
模式定义: 组合模式允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 这个模式能够创建一个树形结构,在同一个结构中处理嵌套菜单和菜单项组。通过菜单和项放在相同结构中,我们创建了一个“整体/部分”层次结构,即由菜单和菜单项组成的对象树。使用组合结构,我们能把相同的操作应用在组合和个别对象上。换句话说,在原创 2014-06-12 15:03:02 · 1762 阅读 · 0 评论 -
设计模式C++实现——模板方法模式
模式定义: 模板方法模式在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模板就是一个方法。更具体的说,这个方法将算法定义成一组步骤,其中的任何步骤都可以是抽象的,由子类实现。这可以确保算法的结果保持不变,同时由子类提供部分实现。模式结构:举例: 泡原创 2014-06-11 18:56:35 · 1057 阅读 · 0 评论 -
设计模式C++实现——外观模式
模式定义:外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。模式结构:举例:构造一个家庭影院,当启动watchMovie方法时可以看电影,当使用endMovie时关闭电影。编程实现及执行结果:#include using namespace std;//组件类class Amplifier{public:原创 2014-06-10 18:49:57 · 1225 阅读 · 0 评论 -
设计模式C++实现——适配器模式
模式定义: 适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。 适配器可以分为类适配器和对象适配器。 类适配器使用多重继承对一个接口与另一个接口进行匹配。 对象适配器依赖于对象组合。 客户使用适配器的过程:1. 客户通过目标接口调用适配器的方法对适配器发出请求。原创 2014-06-10 17:18:09 · 1128 阅读 · 0 评论 -
设计模式C++实现——命令模式
模式定义: 命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 命令对象将动作和接受者包进对象中,这个对象只暴露一个execute()方法。 当需要将发出请求的对象和执行请求的对象解耦的时候,使用命令模式。模式结构:举例: 遥控器上有一个插槽,可以放上不同的原创 2014-06-10 16:14:33 · 2070 阅读 · 1 评论 -
设计模式C++实现——抽象工厂模式
模式定义: 抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。 抽象工厂允许客户使用抽象的接口来创建一组相关产品,而不需要知道实际产出的具体产品时什么。这样一来,客户就从具体的产品中被解耦了。模式结构:举例: 数据库访问程序设计,不同的数据库访问方式可能不一样,为了抽象对对不同数据库的访问,可以将数据库原创 2014-06-05 21:05:09 · 1329 阅读 · 0 评论 -
设计模式C++实现——工厂方法模式
模式定义: 工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。模式结构: Creator是一个类,它实现了所有操纵产品的方法,但不实现工厂方法。Creator的所有子类都必须实现工厂方法(factoryMethod()),以实际制造出产品。 所有的产品必须实现Product基原创 2014-06-05 19:37:25 · 1813 阅读 · 0 评论 -
设计模式C++实现——单例模式
模式定义: 单例模式确保一个类只有一个实例,并提供一个全局访问点。模式结构:单例模式编程实现及执行结果:#include using namespace std; 单例类class Sigleton{public: static Sigleton* getInstance();private: Sigleton(){} stat原创 2014-06-06 15:50:17 · 1127 阅读 · 0 评论