我的 设计模式 随笔
Last updated on September 2, 2024 pm
什么是设计模式?
顾名思义,无论是什么领域出现了模式相关的东西,那么这些模式一定是相对于
原生
来说,更加高效、更加优雅、可维护更强。
在软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的。
设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。面向对象设计模式通常以类别或物件来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类别或物件。设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。
并非所有的软件模式都是设计模式,设计模式特指软件“设计”层次上的问题。还有其他非设计模式的模式,如架构模式。同时,算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。
随着软件开发社群对设计模式的兴趣日益增长,已经出版了一些相关的专著,定期召开相应的研讨会,而且沃德·坎宁安(Ward Cunningham)为此发明了WikiWiki用来交流设计模式的经验。
Java
中都有哪些设计模式?
很多人都说一共有 23 种设计模式,但是我们根据设计模式的定义来看,我认为MVC
也是一种设计模式,所以,在强调了只要是基于原生、前辈们经验总结下来的设计思想,都可以说是一种设计模式。
常见的设计模式有:
工厂模式
创建一个工厂,用于创建对象。
目的:将对象的创建与使用分离,可以避免在代码中重复写对象创建的代码。模板方法模式
抽出公共方法,然后复用
装饰器模式
继承,然后添加新的功能就叫装饰器
享元模式
适配器模式
将一个类的接口换成客户端希望的立一个接口,可以是原不兼容的类被使用。
单例模式
确保类只有一个实例,并只提供一个全局访问点。
设计模式的七大原则
SRP: Single Responsibility Principle(单一职责)—— 一个类只干一件事
OCP: Open Close Principle(开放关闭原则)—— 开放功能,关闭修改
LSP: 里氏替换原则 —— 任何一个父类都可以使用子类来替换,并且不影响程序正常执行
DIP: 依赖倒置原则 —— 高层模块要依赖于抽象接口
ISP: 接口隔离原则 —— 也就相当于接口单一职责,接口应该小而精,不包含多余的方法
CARP: 合成聚合复用原则 —— 少用继承,优先使用合成聚合来构建复杂对象
LoD: 迪米特法则 —— 松耦合
总结:
我认为设计模式就是前人针对于各种各样的总结下来的精华。是完全可以直接复用,并且能够提高开发效率的一种模式。