设计模式的使用,就是为了设计高质量代码并业务实现,那么常见的设计模式有哪些原则?
常⽤的⾯向对象设计原则包括7个,这些原则并不是孤⽴存在的,它们相互 依赖,相互补充。
1. 单一职责原则
特点: 对于一个类而言,应该仅有一个引起它变化的原因。换个通俗的语言来说,就是一个类只做自己的分内之事。
总结: ⼀个类只负责⼀个功能领域中的相应职责。
2. 开放封闭原则
特点:这个原则其实有两个特征,对扩展开放,对更改封闭的。
所以在程序中对于程序的设计要思考清楚,如果每次增加新功能都需要去修改原有的代码,那么便不符合,开放封闭原则。在程序中有新功能就新增代码,而不是修改原有的代码。这就是开放封闭的灵魂。
开放封闭原则的优点:
总结: 对扩展开放,对修改关闭。
3. 依赖倒置原则
抽象不应该依赖细节,细节依赖于抽象。换做通俗的话来说就是面向接口编程。
依赖倒置原则:
3.1.高层模块不应该依赖于低层模块。两个都要依赖于抽象。
3.2.抽象不应该依赖于细节,细节依赖于抽象。
简单来说,就是你高层的代码,不应该依赖于地层的代码。应该依赖抽象接口或者类。不管需求怎么改。我们只需要修改具体的实现细节就行了。这就好比修电脑,内存条坏了换内存条就行,不应该说是把主板也换了。
总结: 依赖于抽象,不能依赖于具体实现。
4. 里式代换原则
特点:子类型必须能够完全替代父类型。父类有A方法功能,子类也有A方法功能,但是子类可以扩展自己的功能。
这时候我们再来看看依赖倒置,不管是高层还是低层都依赖于抽象。看完这个应该更能理解依赖倒置原则了吧。如果代码不符合里式代换原则那么依赖倒置也是白谈了。所以依赖倒置大家谁都不依赖谁,除了约定接口外,自由发挥。
总结:所有引⽤基类的地⽅必须能透明地使⽤其⼦类的对象
5. 合成复用原则
这个原则的本质就是不要过多的依赖继承,尽量使用合成(合成是一种强强拥有关系,表示部门与整体之间的关系。)或者聚合(聚合是一种弱拥有关系,可以这么理解就是a对象可以包含B对象但是b对象不a对象的一部分。)
打破只有依赖的逻辑,增加组合的逻辑,个人觉得有点像微服务的思想,修改近少的修改整体服务,局部修改。
总结: 尽量使⽤合成/聚合,⽽不是通过继承达到复⽤的⽬的。
6.迪米特原则
强调类之间松耦合,类之间关联越小越利于复用,一个弱耦合的类被修改,也不会对别的类造成波及。
总结: ⼀个软件实体应当尽可能少的与其他实体发⽣相互作⽤ 。
7. 接口隔离原则
使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。
总结: 类之间的依赖关系应该建⽴在最⼩的接⼝上
设计模式(Design pattern)代表了最佳的实践,通常被有经验的⾯向对象 的软件开发⼈员所采⽤。设计模式是软件开发⼈员在软件开发过程中⾯临 的⼀般问题的解决⽅案。这些解决⽅案是众多软件开发⼈员经过相当⻓的 ⼀段时间的试验和错误总结出来的。 设计模式是⼀套被反复使⽤的、多数⼈知晓的、经过分类编⽬的、代码设 计经验的总结。使⽤设计模式是为了重⽤代码、让代码更容易被他⼈理 解、保证代码可靠性。 毫⽆疑问,设计模式于⼰于他⼈于系统都是多赢 的,
设计模式使代码编制真正⼯程化,设计模式是软件⼯程的基⽯,如同 ⼤厦的⼀块块砖⽯⼀样。项⽬中合理地运⽤设计模式可以完美地解决很多 问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了 ⼀个在我们周围不断重复发⽣的问题,以及该问题的核⼼解决⽅案,这也 是设计模式能被⼴泛应⽤的原因。
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代模式、职责链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。