引言
对于设计模式(Design pattern)大家都有所听闻,如果有阅读源码习惯的同学更加耳熟能详,例如Spring中就存在多种设计模式(BeanFactory的工厂模式,AOP中的代理模式、适配器模式、单例模式的Bean、Spring的事件驱动模型为观察者模式等等),但是在实际工作中设计模式却处于很尴尬的位置。不知道什么场景用什么设计模式,感觉可以用却又怕多此一举。
其实随着工作年龄的增长,阅读优秀小伙伴的代码或大佬的代码就会发现,自己的代码有点像‘Shit mountain’,不仅对需求的更改不能适应,后人阅读上也不是那么流畅。
那么怎么去转变呢,设计模式不失为一种很好的方法。既可以提高代码的可读性、可重用性、可靠性,也有利于自身系统的稳定、可靠,外部系统的对接,你会慢慢发现,使用了设计模式的系统工程,无论是对满足当前需求,还是适应未来需求都有很大帮助。
从今天开始我将不断推出设计模式的文章,以及相应简单伪代码来更好的了解设计模式,叫上小伙伴一起学习吧!
什么是设计模式
设计模式其实就是人们经过长期变成个经验总结出来的一种编程思想。随着软件工程的不断演进、针对不同的需求,新的设计模式不断被提出,但是设计模式的原则不会改变。基于设计模式的原则,我们可以使用已有的设计模式,也可以给根据产品或项目的开发需求在现有的设计模式基础上组合、改造或重新设计自身的设计模式。
设计模式的7个原则
- 单一职责原则(Single responsibility principle) 单一职责原则又叫单一功能原则,它规定一个类只有一个职责。如果有多个职责被设计在一个类中,这个类就违反了单一职责原则。
- 开闭原则(Open Close Principle) 开闭原则规定软件中的对象(类、模块、函数等)对扩展开放、对修改封闭,在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。
- 里氏替换原则(Liskov Substitution Principle) 里氏替换原则是对开闭原则的补充,规定了在任意父类可以出现的地方,子类都一定可以出现。实现开闭原则的关键就是抽象,父类与子类、接口与实现类。
- 依赖倒转原则(Dependence Inversion Principle) 依赖倒转原则指程序需要依赖于抽象(Java中的抽象类与接口),而不依赖于具体的实现(实现类)。简单来说,就是要求对抽象进行变成个,而非对实现进行编程,用来降低用户与实现模块的耦合度。
- 接口隔离原则(Interface Segregation Principle) 接口隔离原则指通过将不同的功能定义在不同的接口中来实现接口的隔离,这样就避免了其他类在依赖该接口时依赖其不许要的接口,可以减少接口之间的冗余。
- 聚合复用原则(Composite Reuse Principle) 聚合复用原则指通过在一个新的对象中引入已有的对象来达到类的功能服用和扩展的目的。它的设计原则是要尽量使用合成或聚合而不要使用继承来扩展类的功能
- 迪米特法则(Demeter Principle) 迪米特法则指一个对象尽可能少的与其他对象发生相互作用,即一个对象对其他对象应该有尽可能少的了解或依赖。其核心思想还是在降低模块之间的耦合度。
常用设计模式
结束语
到这里先介绍一下设计模式的概念以及常见的设计模式,说实话本人目前对设计模式也是一知半解,在拜读大佬的源码和GitHub上高start代码时,看起来都是十分高大上的那种,像写诗一样,直接🙇
目前打算先从工厂模式写起,后续会在本文不断添加各个设计模式的链接,不知道大家有什么想要了解的设计模式可以在下方回复,一起学习一起进步。
我是loger,欢迎点赞~