C++ 设计模式学习笔记 1----面向对象设计原则

最近在学习设计模式,一直在看刘伟老师的博客(《史上最全设计模式导学目录(完整版)》https://blog.csdn.net/lovelion/article/details/17517213),并收获良多,在这里记录一下自己的学习心得。

1、单一职责:一个类只负责一个功能领域中的相应职责,或可以定义为,就一个类而言,应该只有一个引起它变化的原因。

一个类承担的职责越多,它可被复用的可能性就越小,拓展的难度就越大,所以设计类时尽量将不同的职责封装在不同的类中,降低其相关性,减小耦合度。单一职责一高内聚、低耦合为指导方针。

2、开闭原则:一个软件实体应对扩展开发,对修改关闭,及在尽量不修改原由代码的基础上扩展。

为了满足开闭原则,我们需对系统进行抽象话设计,将不同的实现行为转移至实现层中实现完成。在设计时定义抽象类,提供通用的接口,增加功能是,通过继承增加新的类,实现新的业务,实现不修改原有的代码。达到开闭原则的需求。

3、里式替换原则:所有引用基类的的地方必须能透明地使用期子类对象。在程序中尽量使用基类类型来对对象进行定义,在其运行时在确定其子类类型,用子类对象类替换父类对象,子类的所以方法必须在父类中声明,

4、依赖倒转原则:抽象不应该依赖于细节,细节应当依赖于抽象,及针对接口编程,而不是针对实现编程。 在参数传递、返回值、变量声明等时尽量用抽象类型,而不是具体的类型

开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段它们相辅相成,相互补充,目标一致,只是分析问题时所站角度不同而已。

5、接口隔离:使用多个专门的接口,而不使用单一的总接口,及客户端不应该依赖哪些它不需要的接口。

6、合成复用:尽量使用对象组合,而不是继承来达到复用的目的。在面向对象设计中,可以通过两种方法在不同的环境中复用已有的设计和实现,即通过组合/聚合关系或通过继承,但首先应该考虑使用组合/聚合,组合/聚合可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少;其次才考虑继承,在使用继承时,需要严格遵循里氏代换原则,有效使用继承会有助于对问题的理解,降低复杂度,而滥用继承反而会增加系统构建和维护的难度以及系统的复杂度,因此需要慎重使用继承复用

7、迪米特法则:一个软件实体应当尽可能少地于其他实体发生相互作用。应该尽量减少对象之间的交互,如果两个对象之间不必彼此直接通信,那么这两个对象就不应当发生任何直接的相互作用,如果其中的一个对象需要调用另一个对象的某一个方法的话,可以通过第三者转发这个调用。简言之,就是通过引入一个合理的第三者来降低现有对象之间的耦合度

要注意下面的几点:在类的划分上,应当尽量创建松耦合的类,类之间的耦合度越低,就越有利于复用,一个处在松耦合中的类一旦被修改,不会对关联的类造成太大波及在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限在类的设计上,只要有可能,一个类型应当设计成不变类在对其他类的引用上,一个对象对其他对象的引用应当降到最低

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值