Java设计模式那点事

311 阅读4分钟

软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

设计模式6大设计原则3种模式分类23种设计模式

设计模式6大原则

(一)单一原则

一个对象或者一个方法只负责一项职责,不能承担太多的功能,保证对象的高内聚和颗粒度。

(二)里氏替换原则

子类可以扩展父类的功能,但不能改变原有父类的功能,即子类可以替换父类。

(三)依赖倒置原则

面向接口编程思想。采用依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。

简单理解:变量或者参数传递,尽量使用抽象类,或者接口。

(四)接口隔离原则

客户端不应该依赖它不需要的接口;类之间依赖关系应该建立在最小的接口上。

简单理解:复杂的接口,根据业务拆分成多个简单接口,尽量不要在一个接口存放很多方法,这样使得这个类很臃肿,尽量接口细化,一个接口对应一个功能模块。

(五)迪米特原则

降低类与类之间的耦合。

迪米特法则,又叫最少知识原则,也就是说,一个对象应当对其他对象尽可能少的了解。

(六)开闭原则

软件对象(类、模块、方法等)应该对于扩展是开放的,对修改是关闭的。

设计模式3大分类

(一)创建型

对象实例化的模式,创建型模式用于解耦对象的实例化过程。

单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。

(二)结构型

把类或对象结合在一起形成一个更大的结构。

适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。

(三)行为型

类和对象如何交互,及划分责任和算法。

模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

设计模式23种类

「1」单例模式

某个类只能有一个实例,提供一个全局的访问点。

juejin.cn/post/714046…

「2」工厂方法

定义一个创建对象的接口,让子类决定实例化那个类。

juejin.cn/post/714057…

「3」抽象工厂

创建相关或依赖对象的家族,而无需明确指定具体类。

juejin.cn/post/714057…

「4」建造者模式

封装一个复杂对象的构建过程,并可以按步骤构造。

juejin.cn/post/714084…

「5」原型模式

通过复制现有的实例来创建新的实例。

juejin.cn/post/714098…


「6」适配器模式

将一个类的方法接口转换成客户希望的另外一个接口。

juejin.cn/post/714357…

「7」组合模式

将对象组合成树形结构以表示”部分-整体”的层次结构。

juejin.cn/post/714684…

「8」装饰模式

动态的给对象添加新的功能。

juejin.cn/post/714540…

「9」代理模式

为其他对象提供一个代理以便控制这个对象的访问。

juejin.cn/post/714535…

「10」亨元模式

通过共享技术来有效的支持大量细粒度的对象。

juejin.cn/post/714677…

「11」外观模式

对外提供一个统一的方法,来访问子系统中的一群接口。

juejin.cn/post/714648…

「12」桥接模式

将抽象部分和它的实现部分分离,使它们都可以独立的变化。

juejin.cn/post/714651…


「13」迭代器模式

一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构。

juejin.cn/post/714545…

「14」模板模式

定义一个算法结构,而将一些步骤延迟到子类实现。

juejin.cn/post/714566…

「15」解释器模式

给定一个语言,定义它的文法的一种表示,并定义一个解释器。

juejin.cn/post/714572…

「16」策略模式

定义一系列算法,把他们封装起来,并且使它们可以相互替换。

juejin.cn/post/714573…

「17」状态模式

允许一个对象在其对象内部状态改变时改变它的行为。

juejin.cn/post/714580…

「18」观察者模式

对象间的一对多的依赖关系。

juejin.cn/post/714602…

「19」备忘录模式

在不破坏封装的前提下,保持对象的内部状态。

juejin.cn/post/714613…

「20」中介者模式

用一个中介对象来封装一系列的对象交互。

juejin.cn/post/714613…

「21」命令模式

将命令请求封装为一个对象,使得可以用不同的请求来进行参数化。

juejin.cn/post/714616…

「22」访问者模式

在不改变数据结构的前提下,增加作用于一组对象元素的新功能。

juejin.cn/post/714645…

「23」责任链模式

将请求的发送者和接收者解耦,使的多个对象都有处理这个请求的机会。

juejin.cn/post/714622…