设计模式学习笔记

设计模式最重要的是六大原则:

(1)单一职责原则:一个类只做一样事情。

(2)接口隔离原则:一个类对另一个类的依赖应该建立在最小的接口上。说的是如果一个类依赖于另一个接口,这个接口应该设计的尽量的小,如果已存在一个非常大的接口,应该拆分成多个接口。

(3)依赖倒转原则:

1. 高层模块不应该依赖底层模块,两者都应该依赖其抽象。

2. 抽象不应该依赖细节。

3. 细节应该依赖抽象。

高层模块建立在底层模块上,这个很容易理解。但是,高层模块最好不要直接依赖底层模块,尤其是底层模块的功能经常发生伸缩时,会直接造成高层模块的不稳定。因此,在高层模块和底层模块中添加一个缓冲层,有利于程序的稳定。高层模块依赖于接口层,而底层模块只需要保证其实现的接口的稳定性,而不需要考虑高层模块是如何调用的。

(4)里式替换原则:尽量不要重写父类的方法。

子类经常重写父类的方法,容易造成类的误用。

(5)开闭原则:也成OCP原则。对扩展开放,对修改封闭。

当软件发生变化时,尽量通过扩展软件实体来发生变化,而不是修改现有的代码来实现变化。

尽量通过扩展类的方式实现功能的扩展,而尽量减少对已有类的修改。

这个是面向对象设计和面向过程设计的重要区分。面向过程关注软件的逻辑,通过逻辑判断修改软件逻辑。面向对象通过增加或删除软件实体,增加或修改功能。因此,面向对象更应该注重软件的变化点,将变化点放在不同的文件中。

开闭原则并非不修改代码,只是对内部的修改使用扩展方式,而如果外部修改,仍然需要修改代码。但它属于功能的修改,而非功能的扩展。对于外部绝大多数没有变化的功能,根本不需要考虑内部修改对外部的影响。

(6)迪米特法则:又叫最少知道原则。一个对象应该对其它类保持最少了解。

只与直接朋友通信。陌生的类最好不要以局部变量的形式出现在类的内部。

如果有陌生的类,可以将其放置到和参数相关的类的实现当中。

尽量将操作类内的对象的方法放置到类的内部,而非将其返回到外部。其它类的类内成员可以通过参数传递到类内参数。

当一个类不满足迪米特法则时,一定存在函数条件和返回值之间的滥用。这种滥用一般可能会造成职责管理上的混乱。

 

另外,这几个法则需要在UML中具体体现出来。

依赖:一个类在的出现在另一个类的内部成员、局部变量、函数的参数、函数的返回值中,则这两个类有依赖关系。

关联(组合|聚合):一类出现在另一个类的内部成员。

继承(实现):一个类是另一个类继承另一个类。

可以使用 Visual Paradigm插件在Vistual Stdio中绘制类图。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值