![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 79
黑檀木
愿望是混吃等死,可是却被现实逼得不得不努力。
展开
-
(七)外观模式
外观模式为子系统中的一组接口提供了一个一致的界面,此模式定义了一个高层接口,这个接口使得这一个子系统更加容易使用 上代码: #include #include using namespace std; class SubSystemOne { public: void MethodOne() { cout << "子系统方原创 2014-03-30 16:30:23 · 424 阅读 · 0 评论 -
(十一)备忘录模式
备忘录模式:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态原创 2014-04-04 23:14:35 · 471 阅读 · 0 评论 -
(四)几个只有文字没有代码的原则
单一职责原则: 所谓的单一原则,简单的说,就是每个类只有一个功能,只有有一个原因会引起这个类的变化,这个很容易理解,就像之前的简单工厂类里的加法类就只是实现加法的功能就可以了,如果要将很多功能封装在一个类中的话,无疑会使得代码变得很累赘,很难维护修改。 开放——封闭原则: 对于更改是封闭的,对于拓展是开放的,拓展就是增加,更改就是修改代码啦,就是说增加代码(或者说类)是可以的,可是对原创 2014-03-23 19:07:17 · 556 阅读 · 0 评论 -
(六)模板方法模式
觉得这个方法在C++中主要就体现在类中的函数是不是virtual函数,当我们需要觉得子类要实现的功能中有一部分是一样的时候,应该在父类中定义为非virtual函数,基本就是这样,就是定义一个操作中的算法骨架,再将某些步骤延迟到子类中去实现(也就是到子类中在实现对应的virtual函数),这个模式不难理解,难得是怎么发现子类的功能有哪些是一样的,发现了后又要怎么在父类中实现,实现的过程中也要记得之前原创 2014-03-23 20:51:14 · 382 阅读 · 2 评论 -
(五)工厂模式
这个跟之前的简单工厂模式的不同之处在于工厂类factory作为基类存在,算法类operation作为子类存在,不同的工厂子类生成对应大算法子类,不难理解,就直接贴代码了#include #include using namespace std; //算法类 class operation { public: operation() {}原创 2014-03-23 20:08:56 · 376 阅读 · 0 评论 -
(三)装饰模式
动态地给对象添加一些额外的职责,按添加的顺序添加职责,建造过程不稳定,即是当你向旧的类中添加新代码时,一般是为了添加核心职责或主要行为。而当需要加入的仅仅是一些特定情况下才会执行的特定的功能时(简单点就是不是核心应用的功能),就会增加类的复杂度。装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地、按顺序地使用装饰功能包装对象。代码如下原创 2014-03-23 17:38:55 · 357 阅读 · 0 评论 -
(二)策略模式
#include using namespace std; class operation { public: operation( double a,double b ) { A = a; B = b; } virtual double get_result()原创 2014-03-23 16:22:15 · 443 阅读 · 0 评论 -
(十)状态模式
状态模式是当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 当一个对象的状态转换需要太多的if-else或者其他的判断语句的时候,就可以用这个模式,把状态的判断逻辑转移到表示不同状态的一系列的类中,也就是把本来在一起的各个判断语句解开来。 用一个表示不同时间段程序员状态的例子: #include #include using namespace原创 2014-04-02 16:42:25 · 407 阅读 · 0 评论 -
(一)简单工厂模式
#include using namespace std; //算法基类 class operation { public: operation() {} void set_data( double a, double b ) { A=a;原创 2014-03-23 15:38:35 · 390 阅读 · 0 评论 -
(九)适配器模式
适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不同不兼容而不能一起工作的那些类可以一起工作 代码: #include #include using namespace std; class player { public: player( string name ) : player_name( name ) {}原创 2014-03-31 20:37:02 · 422 阅读 · 0 评论 -
(八)抽象工厂模式
抽象工厂模式提供了一个创建一系列相关或互相依赖对象的接口,而无需指定它们的具体类。 当你在进行数据库开发的时候,刚开始用的是sql server数据库,所以你把有关数据库的内容都封成一个类,那么如果以后换成access了呢?难道要再把access的用法封成一个类?就算这个类封好了,那外部程序中有关sql server的代码不是都要改成access的代码了吗?这个时候当然是用到工厂模式啦,当然,不原创 2014-03-31 12:56:08 · 372 阅读 · 0 评论