- 博客(16)
- 资源 (4)
- 收藏
- 关注
原创 设计模式——行为性——观察者模式
1、定义:一个对象状态改变时(目标对象),所有依赖他的对象(观察者对象)都需要发生改变。 示例:有一个Sender类,负责数据的发送,Display类和Media类都需要调用Sender类中的方法进行数据发送,当网络连接断开时,需要通知Display和Media类停止数据发送。 紧耦合设计: #include #include using namespace std; class Di
2013-11-29 22:57:26 759
原创 设计模式——行为性——命令模式
命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 动机:需要对请求进行排队,记录,以及撤销操作。所以需要将请求发起者和实现者分离。 思路:插入一个中间层,消除紧耦合。 通常调用一个类的某个方法,我们都是直接调用,发起一个请求。而命令模式,是将请求封装成一个对象。 设计模式的关键点是把依赖关系转化,都要依赖抽象。
2013-11-26 00:39:47 665
转载 Dshow时间戳
Directshow中的时钟(Time and Clocks in Dshow) 1、参考时钟: 任何一个引出IReferenceClock 接口的对象都可以作为参考时钟。参考时钟可以是Filter提供,例如声卡就可以提供一个硬件的时钟。当然,可靠的时钟就是采用系统的时间。 调用IReferenceClock::GetTime可以获取时钟的当前时间。 尽管时钟的精确性还有所变动,但是Get
2013-11-25 00:36:06 1507
转载 设计模式——三大类
1、创建类 工厂方法模式 建造者模式 抽象工厂模式 单例模式 原型模式 2、结构类 适配器模式 桥梁模式 组合模式 装饰模式 门面模式 享元模式 代理模式。 3、行为类 责任链模式 命令模式 解释器模式 迭代
2013-11-24 22:45:15 601
转载 设计模式——开放封闭原则
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。 解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 开闭原则是面
2013-11-22 00:39:19 896
转载 设计模式——迪米特法则
定义:一个对象应该对其他对象保持最少的了解。 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。 解决方案:尽量降低类与类之间的耦合。 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么
2013-11-22 00:22:50 934
转载 设计模式——接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。 解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。 举例来说明接口隔离原则: ."
2013-11-22 00:16:47 755
转载 设计模式——依赖倒置原则
定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。 解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接
2013-11-22 00:07:14 772
转载 虚函数与非虚函数区别
非虚函数: #include "iostream.h" class A { public: void funA() { funB(); } void funB() { cout }; class B: public A { public: void funB() { cout }; void main() { B b; b.funA(); }
2013-11-21 23:52:29 1101
转载 设计模式——里氏替换原则
设计模式六大原则(2):里氏替换原则 . (2012-07-03 15:18:37) 转载▼ 标签: 设计模式 里氏替换 it 分类: 设计模式 肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara L
2013-11-21 23:25:05 824
转载 设计模式——单一职责原则
定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。 问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T
2013-11-21 23:00:05 919
转载 在VS2008里编译x264(菜逼专用)
在VS2008里编译x264(菜逼专用) (2011-11-01 14:34:28) 转载▼ 标签: 杂谈 1.下载x264 我一共下了两个版本:第一个版本的下载地址是http://ttpublic.googlecode.com/files/x264-snapshot-20090216-2245.rar 第二
2013-11-20 22:58:45 1299
原创 设计模式——行为性——职责链模式
class Handle { public: Handle(){} virtual ~Handle(){} void SetSuccessor(Handle* successor) //设置后继,这里必须用指针,只是声明,没有去定义。 { this->h_hander = successor; } virtual void HandleRequest(int r
2013-11-20 00:51:00 890
转载 无线路由
路由设置: 1、电脑连路由出口线, 2、路由后面有初始登陆密码: 192.168.1.1 用户名:admin 密码:admin 3、选择PPPOE 4、输出ADSL拨号上网的账号和密码 5、配置输入无线路由的上网账号和密码 6、重启路由 7、连接路由进线
2013-11-10 21:45:17 579
转载 UML has a/ is a
转载 has a / is a 的区别 如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承;比如菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承而不是聚合。 如果你确定两件对象之间是has-a的关系,那么此时你应该使用聚合;比如电脑是由显示器、CPU、硬盘等组成的,那么你应该把显示器、CPU、硬盘这些类聚合成电脑类,而不是从电脑类继承。 类间的关系 网上关
2013-11-03 20:34:48 3049
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人