自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

转载 软件设计原则----迪米特法则(LoD) .

“一个对象应该对其他对象有尽可能少的了解”“Only talk to your  immediate friends”“Don’t talk to strangers”“每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位”  ……来源:迪米特法则(LoD)最初是用来作为面向对象的系统设计风格的一种法则,是很多著名系统,如火星

2012-01-16 16:33:58 778

转载 软件设计原则----合成/聚合复用原则(CARP)

“要尽量使用合成/聚合,尽量不要使用继承。”陈述:在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新对象通过向这些对象的委派达到复用已有功能的目的。引入:如我们所知,在面向对象设计里,不同环境中复用已有设计和实现的基本方法:继承。合成/聚合。1、继承复用继承复用通过扩展一个已有对象的实现来得到新的功能,基类明显地捕获共同的属性和

2012-01-16 16:29:25 668

转载 软件设计原则----接口隔离原则(ISP)

“使用多个专门的接口比使用单一的总接口要好”。“一个类对另外一个类的依赖性应该建立在最小的接口上”。陈述:不应该强迫客户依赖于他们不用的方法。一个类的不内聚的“胖接口”应该被分解成多组方法,每一组方法都服务于一组不同的客户程序。例子: Door可以加锁、解锁、而且可以感知自己是开还是关; Door是抽象基类,客户程序可以依赖于抽象而不是具体的实现。

2012-01-16 16:22:32 552

转载 软件设计原则----依赖倒置原则(DIP)

"要依赖于抽象,不要依赖于具体。”“要针对接口编程,不要针对实现编程。”陈述:高层模块不应该依赖于低层模块。二者应该依赖于抽象。抽象不应该依赖于细节。细节应该依赖于抽象。分析:所谓“倒置”是相对于传统的开发方法(例如结构化方法)中总是倾向于让高层模块依赖于低层模块而言的软件结构而言的。高层包含应用程序的策略和业务模型,而低层包含更多的实现细节,平台相关细

2012-01-16 16:16:27 665

转载 软件设计原则----LisKov替换原则(LSP)

“一个软件实体如果使用的是一个基类的话,一定适用于其子类,而且根本不能觉察出基类对象和子类对象的区别。”陈述:子类型(Subtype)必须能够替换他们的基类型(Basetype)Barbara Liskov对原则的陈述:若对每个类型S的对象o1,都存在一个类型T的对象o2,使得在所有针对T编写的程序P中,用o1替换o2后,程序P的行为功能不变,则S是T的子类型。通俗地讲

2012-01-16 15:56:45 600

转载 软件设计原则----开-闭原则(OCP)

设计一个模块时,应当使该模块在不被修改的前提下被扩展,即可在不必修改源代码的情况下改变该模块的行为。 陈述: 软件实体(类、模块、函数等)应该是可以扩展的,同时还可以是不必修改的,更确切的说,函数实体应该:(1)对扩展是开放的当应用的需求变化时,我们可以对模块进行扩展,使其具有满足改变的新的行为。即:我们可以改变模块的功能(2)对更改是封闭的对模块进行扩展时,不必改动模块已

2012-01-16 15:46:44 601

转载 软件设计原则----单一职责原则(SRP)

陈述:就一个类而言,应该只有一个导致其变化的原因分析:一个职责就是一个变化的轴线。一个类如果承担的职责过多,就等于将这些职责耦合在一起。一个职责的变化可能会虚弱或者抑止这个类完成其它职责的能力。多职责将导致脆弱性的臭味。示例1:  Rectangle类具有两个职责:计算矩形面积的数学模型将矩形在一个图形设备上描述出来Rectangle

2012-01-16 15:35:15 516

转载 函数对象(functor)

简单地说,如果一个类重载了调用操作符(),那么这个类的对象就是所谓的函数对象。 一、关于操作符重载的简单说明1.    调用操作符()的重载必须以成员函数的形式出现,另外还必须以成员函数形式重载的操作符有:=、[ ]和->2.    IO操作符和>>的重载则必须以友元函数的形式出现。3.    下面4个符号是不能被重载的:::、 .*、 . 和 ?:

2012-01-14 16:41:50 591

转载 C++实现Behavioral - Command模式

The COR (Chain Of Responsibility) pattern forwards requests along a chain of classes, but the Command pattern forwards a request only to a specific object. It encloses the request for a specific act

2012-01-14 16:32:44 710

转载 C++实现Behavioral - Chain Of Responsibility模式

在软件构建构成中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接收者,如果显示指定,将必不可少地带来请求发送者与接收者的紧密耦合。COR(Chain of Reposibility)设计模式可以使请求的发送者不需要指定具体的接收者,让请求的接收者自己在运行时决定来处理请求,从而使两者解耦。 “Avoid coupling the sender of a request to

2012-01-10 15:58:32 622

转载 结构型模式总结

结构型模式,一共有7个,即Adapter, Bridge, Composite, Decorator, Façade, Flyweight和Proxy。分别总结如下: 一、Adapter模式Adapter模式有两种形式:对象适配器和类适配器。 1.    对象适配器上图为对象适配器UML类图。在对象适配器形式下,Adapter类中需要拥有一个Ad

2012-01-10 15:49:25 643

转载 I,P,B帧和PTS,DTS的关系

基本概念:I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。P frame: 前向预测编码帧 又称predictive-frame,通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫

2012-01-04 16:36:33 628

转载 C++实现Structural - Proxy模式

Proxy also a.k.a. Surrogate对于复杂的软件系统常常有一种处理手法,即增加一层间接层,从而使得系统获得一种更为灵活、满足特定需求的解决方案。在面向对象的系统中,有些对象由于某种原因,比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等,直接访问会给使用者或者系统结构带来很多麻烦。 Proxy设计模式就是在不失去透明操作对象的同时,通过增加

2012-01-04 16:33:48 2559

转载 C++实现Structural - Flyweight模式

面向对象很好地解决了系统抽象性的问题,同时在大多数情况下,也不会损及系统的性能。但是,在某些特殊的应用中,由于对象的数量太大,采用面向对象会给系统带来难以承受的内存开销。比如图形应用中的图元等对象、字处理应用中的字符对象等等。 采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价---主要指内存需求方面的代价。Flyweight(享元)设计模式可以在避

2012-01-04 15:33:38 579

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除