前言
设计模式,如同智慧的结晶,凝聚着经验丰富的面向对象软件开发者的最佳实践。它们是软件开发人员在崎岖曲折的软件开发道路上披荆斩棘、解决各类问题的金钥匙。这些宝贵的解决方案,是通过无数软件开发人员历经漫长岁月的试验与错误所汇聚而成的。
若你怀揣雄心壮志,渴望在Java的世界中崭露头角,那么设计模式便是你不可或缺的利器,而掌握其优化技巧更是重中之重。提起设计模式,许多人或许仅停留在那23种设计模式的认知上,但对于真正的理解和运用,恐怕只有少数人能做到游刃有余。为此,我想与你分享一些关于设计模式的学习心得笔记,以及更丰富的视频学习资料和Java体系学习笔记。希望这些资料能帮助你在Java的道路上更进一步,为你的技术之旅增添一抹亮色。
由于文字过多,我把笔记整理成文档免费分享给大家,有需要的朋友可以在文章末尾获取。
设计模式的六大原则
开闭原则
“热插拔”设计原则强调扩展性而非修改性。这意味着新功能应无缝加入,无需触动旧代码。为实现此效果,我们利用接口和抽象类来模块化代码,提升程序的可扩展性、可维护性和升级便捷性。后续设计中将详细探讨这一原则的实践。
里氏代换原则
里氏代换原则(LSP)是面向对象设计的核心原则。它指出,在程序中,任何使用基类对象的地方,都可以无缝地替换为子类对象,而不会影响系统的正常功能。这一原则确保了继承关系的稳定性和复用性。只有当子类能够完全替代基类,并且在替换过程中不破坏系统的任何功能时,基类才真正实现了其复用价值。同时,子类可以在继承基类的基础上,添加新的功能或行为,从而增强系统的扩展性。
里氏代换原则与开闭原则相辅相成。开闭原则强调对扩展开放,对修改关闭,而里氏代换原则则具体规范了如何通过继承关系实现这种扩展性。在实现开闭原则时,关键的一步是抽象化,即将具体实现与接口或抽象类分离。基类与子类的继承关系正是这种抽象化的具体体现。因此,里氏代换原则可以看作是开闭原则在面向对象设计中的具体实现规范。
依赖倒转原则
这个原则是开闭原则的基础,具体内容:针对对接口编程,依赖于抽象而不依赖于具体。
接口隔离原则
使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。
迪米特法则,又称最少知道原则
最少知道原则是指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
合成复用原则
合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。
23种设计模式
由于平台文章篇幅限制,细节内容过多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!需要的朋友可在文章末尾获取资料
总体来说设计模式分为三大类:
创建型模式主要用于对象的创建,它们提供了创建对象的最佳方式。其中包括:
- 单例模式:确保一个类只有一个实例,并提供一个全局访问点。
- 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。
- 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要指定它们具体的类。
- 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
- 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
结构型模式关注于对象的组合以及它们之间的职责分配。它们包括:
- 适配器模式:将一个类的接口转换成客户期望的另一个接口。
- 装饰者模式:动态地给一个对象添加一些额外的职责。
- 代理模式:为其他对象提供一种代理以控制对这个对象的访问。
- 外观模式:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
- 桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
- 组合模式:将对象组合成树形结构以表示“部分整体”的层次结构,组合模式使得用户对单个对象和复合对象的使用具有一致性。
- 享元模式:运用共享技术有效地支持大量细粒度对象的复用。
行为型模式主要关注对象间的通信和职责分配。它们包括:
- 策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。
- 模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。
- 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,它的所有依赖者都会自动收到通知并更新。
- 迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
- 责任链模式:为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。
- 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求把客户参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。
- 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
- 状态模式:允许一个对象在其内部状态改变时改变它的行为。
- 访问者模式:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各类的结构的情况下定义新的操作。
- 中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
- 解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
在这免费分享一份精心整理的23种设计模式笔记文档,有需要的朋友可以在文章末尾获取
最后
👇👇点击下方名片领取此资料👇👇