设计模式六大原则

设计模式定义

设计模式是人们在面对同类型软件工程设计问题所总结出的一些有用经验。模式不是代码,而是某类问题的通用解决方案。设计模式是软件开发人员经过相当长时间的试验和错误总结出来的解决一些通用问题的宝贵经验。每一种设计模式都描述了一个经常出现的问题以及该问题的核心解决方案。

设计模式目的

设计模式的本质目的在于提高软件的可维护性、可扩展性、灵活性。

设计模式六大原则

1.单一职责原则(Single Responsibility Principle)

对于一个类而言,应该仅有一个引起它变化的原因。不要让一个类承担过多的职责,让每个类各司其职,一个类拥有一个职责。如果一个模块承担R1和R2两个职能,R1要发生变化,修改模块代码很容易发生风险,使得R2页收到影响。

举例:随着科技的进步,手机由最初的只能接打电话变成现在集拍照,摄像,游戏,播放音乐等功能一体的智能机,手机就是一个多职能的设备,而相机,游戏机,MP3就是单一职责的设备,如果手机摔得七零八落不能用了,那么拍照,摄像,游戏,播放音乐等所有的功能都不能用了,但是MP3摔坏了,相机还是可以拍照,游戏机还是可以打游戏。

2.开闭原则(The Open-Closed Priciple OCP)

(1)开闭原则即对扩展开放(open for extension),对修改封闭(closed for modification)。软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。

(2)当我们想对程序增加新的内容的时候,不能修改原有的代码,而应该去增加新的类。通过抽象类和接口来实现对扩展的开放。

(3)开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序当中呈现出频繁变化的那部分做出抽象,拒绝不成熟的抽象和抽象本身一样重要。

3.里氏替换原则(Liskov Substitution Principle)

(1)子类型必须能够替换掉它们的父类型(也就是说,在程序当中,把父类都替换成它的子类,程序的行为没有变化)。

(2)里氏替换原则是说任何基类出现的地方,子类一定可以出现。当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正地被复用,而派生类也能够在基类的基础上增加新的行为。

(3)正是由于子类型的可替换性才使得使用父类型的模块在无需修改的情况下就可以扩展。

举例:动物是父类,猫是子类,动物有跑,叫的行为,猫继承于动物,也有跑和叫的行为。同样狗,牛,羊也是动物的派生类。我们在写代码的时候,只需要更改实例化的地方,其他地方不需要更改。

4.依赖倒转原则(Dependence Inversion Principle)

A.上层模块不应该依赖于下层模块,两者应该依赖于抽象。

B.抽象不应该依赖于实现细节,实现细节应该依赖于抽象。(针对接口编程,不要针对实现编程)

依赖倒置原则是开闭原则的基础

5.接口隔离原则(Interface Segregation Principle
不要对外暴露没有实际意义的接口。客户端不应该依赖于它不需要的接口。

6.迪米特法则(Law of Demeter LOD),又称最少知道原则(Least Knowledge Principle)

如果两个类之间不必直接通信,那么这两个类就不应当发生直接的相互作用,使得系统的各个功能模块相对独立。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值