Java23种设计模式整合
😄生命不息,写作不止
🔥 继续踏上学习之路,学之分享笔记
👊 总有一天我也能像各位大佬一样
🏆 一个有梦有戏的人 @怒放吧德德
🌝分享学习心得,欢迎指正,大家一起学习成长!
@[toc]
前言
之前学习了全部的设计模式(为了不影响观看,文末粘贴链接),最近工作太忙一直加班,回去都好晚了,就没啥时间学习,于是今天休息就来整理之前学习的设计模式,温故而知新。
七大设计原则
设计模式的目的就是能够使代码在耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等方面更加合理完善。一段好代码就必须有高可重用性,公共代码提取出来,使之不需要重复编写,可读性,代码需要规范编程,这样有助于阅读和理解,要使得代码高内聚低耦合。然而,这些设计模式都需要遵守一定的规则,就是设计模式原则。接下来简单的介绍七大原则。
1) 单一职责原则(Single Responsibility Principle)
单一职责原则表示一个模块的组成元素之间的功能相关性,也就是一个类只负责一项职责。
2) 接口隔离原则(Interface Segregation Principle)
客户端不应该依赖它不需要的接
口,即一个类对另一个类的依赖
应该建立在最小的接口上。也可以用个通俗的话来说就是将接口最小化,类需要哪个类就是事件哪个接口,毕竟java是多实现的。
3) 依赖倒转原则(Dependence Inversion Principle)
高层模块不应该依赖低层模块,二者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖抽象,抽象不应该依赖细节,细节应该依赖抽象
4) 里氏替换原则(Liskov Substitution Principle)
里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
5) 开闭原则(Open Close Principle)
对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。
6) 迪米特法则(Demeter Principle)
一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
7) 合成复用原则(Composite Reuse Principle)
尽量使用合成/聚合的方式,而不是使用继承。
23种设计模式-三类模式
创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、责任链模式、访问者模式。
创建型模式
单例模式
【设计模式】Java设计模式 - 单例模式
单例模式,是java设计模式中最简单的设计模式,是属于创建类型模式。单例模式就是只能有一个实例,即一个类有且仅有一个实例,并且自行实例化向整个系统提供。
抽象工厂模式
【设计模式】Java设计模式 -抽象工厂模式
抽象工厂模式提供一个接口,不必去指定具体的产品,创建多个产品族的产品对象。对于普通的工厂来说,可以解决一类对象的创建,但是对象有时候很复杂,在有几十种对象中又分了好几种类型,只有一个工厂的话,实现起来就十分复杂,因此需要吧工厂分为很多种,就比如汽车中有奔驰、红旗等,在奔驰中又分为了A级C级等,这就可以吧奔驰,红旗创建各自的工厂,由工厂来划分是具体哪个对象。
建造者模式
【设计模式】Java设计模式 - 建造者模式
构建者是一种可以将复杂对象的构建和表示分离开来,从而使得一个构建过程可以生成多个不同的表示对象。建造者模式通过一步一步构建对象。
工厂模式
【设计模式】Java设计模式 -工厂模式
在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
原型模式
【设计模式】Java设计模式 - 原型模式
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。
结构型模式
适配器模式
【设计模式】Java设计模式 - 适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。就像电脑/投影仪那种,电脑要通过接线的方式投影,但是在以前的接口都是VGA接口,然而我们的电脑却大多都是HDMI类型的,这就需要转接头来转换接口,于是,这个转接头就充当着适配器的身份。
桥接模式
【设计模式】Java设计模式 - 桥接模式
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
装饰模式
【设计模式】Java设计模式 - 装饰者模式
装饰者模式是一种结构型模型,是动态的给对象增加职责,对于新增功能来说要比通过子类方式更加的灵活。他允许对一个对象进行添加新的功能,但不能改变结构。
组合模式
【设计模式】Java设计模式 - 组合模式
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。
外观模式
【设计模式】Java设计模式 - 外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
享元模式
【设计模式】Java设计模式 - 享元模式
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。
代理模式
【设计模式】Java设计模式 - 动态代理
动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象。动态代理就需要建立真实对象和代理对象关系,再去实现代理逻辑方法。
行为型模式
模版方法模式
【设计模式】Java设计模式 - 模板模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
命令模式
【设计模式】Java设计模式 - 命令模式
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
迭代器模式
【设计模式】Java设计模式 - 迭代器模式
迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。
观察者模式
【设计模式】Java设计模式 - 观察者模式
观察者模式又叫发布-订阅(Publish-Subscribe)模式,是对象的行为模式,订阅是表示这些观察者对象需要向目标对象进行注册,这样目标对象才知道有哪些对象在观察它。发布指的是当目标对象的状态改变时,它就向它所有的观察者对象发布状态更改的消息,以让这些观察者对象知晓。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
中介者模式
【设计模式】Java设计模式 - 中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。
备忘录模式
【设计模式】Java设计模式 - 备忘录模式
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。
解释器模式
【设计模式】Java设计模式 - 解释器模式
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
状态模式
【设计模式】Java设计模式 - 状态模式
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。
策略模式
【设计模式】Java设计模式 - 策略模式
在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。
责任链模式
【设计模式】Java设计模式 - 责任链模式
当一个对象在一条链上被多个拦截器拦截处理,当然也可以不拦截处理,这种的设计模式就是责任链模式。可以在这被拦截的期间进行加工处理。就好比如,我们申请请假,需要经过项目经理,再到部门经理,最后到人事。在这期间,经理审批时候可以修改请假天数。本次实验用以上部分代码。
访问者模式
【设计模式】Java设计模式 - 访问者模式
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。
这样就将以前写的做了一个很好的整合,方便查看。
👍创作不易,如有错误请指正,感谢观看!记得点赞哦!👍