23种设计模式笔记第一篇资料链接以及设计原则

23种设计模式笔记第一篇资料链接以及设计原则,第1张

在文章之初,附上我在网上看的资料的链接:

博客:Java开发中的23种设计模式详解 - leon66666 - 博客园

视频链接:【狂神说Java】通俗易懂的23种设计模式教学(停更)_哔哩哔哩_bilibili

由于狂神那个没有更完,附上黑马程序员的视频讲解和课件资料:

黑马程序员Java设计模式详解,全网最全23种Java设计模式(图解+框架源码分析+实战)_哔哩哔哩_bilibili

https://pan.baidu.com/s/1MUXkLFFEZBmqnbqOFzOpuA 提取码:p2hf

这里我没有附上23中设计模式之间的关系图,是因为这个图只是起到了一个总结的作用,我们在学完之后去看就会有一种豁然开朗的感觉,但是如果提前去看了,说不定还会有误导的可能。

目录

设计模式概述 GoF23

23种设计模式分类

设计模式的思维模型

六大设计原则(OOP七大设计原则)

较好的软件应该具有的特性


设计模式概述 GoF23

设计模式说白了就是解决特定问题的一系列套路(四人帮GoF的23种设计模式)

它不是语法规定,而是用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决办法。

设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。

学会23种设计模式,就会对Java这门语言有更深刻的认识。如果有机会可以去看《设计模式:可复用面向对象软件的基础》

23种设计模式分类

创建型模式:5种(描述怎么去创建一个对象,主要特点是想办法让对象的创建和使用分离)

工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、单例模式(Singleton)、建造者模式(Builder)、原型模式(Prototype )。

结构型模式:7种(主要是描述将类或者对象按照某种布局组成一些更大的结构)

适配器模式(Adapter)、装饰器模式(Decrator)、代理模式(Proxy)、外观模式(Facade)、桥接模式(Bridge)、组合模式(Composite)、享元模式(Flyweight)。

行为型模式:11种(重点是描述类或者对象之间如何相互协作,共同完成单个对象无法完成的任务;主要是分配一些职责)

策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、责任链模式(Chain of Responsibility)、命令模式(Command)、备忘录模式(Memento)、状态模式(State)、访问者模式(Visitor)、中介者模式(Mediator)、解释器模式(Interpreter)。

其实还有两类:并发型模式和线程池模式。

设计模式的思维模型

这里要明确的是:面向对象的六大设计原则会指导我们的整个设计开发的过程,而设计模式只是在某些特定的场景下,运用某个模式帮助我们解决一些问题。

要知道,每一种设计模式都是有利有弊的,在设计过程中,不要盲目的去使用,要根据实际情况去选择,并且做出调整。我们必须明确每一个设计模式的使用场是什么。

六大设计原则(OOP七大设计原则)

七大原则

描述

单一职责原则

(Single Responsibility Principles)

不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,如若不然,就应该把类拆分。一个方法尽可能干好一件事情。

“开-闭”原则

(Open Close Principle)

对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。

里氏替换原则

(Liskov Substitution Principle)

面向对象设计的基本原则之一。LSP是继承复用的基石。

是对“开闭”原则的补充。任何基类可以出现的地方,子类一定可以出现(这句话是核心思想,但反过来肯定不行)

依赖倒转原则

(Dependence Inversion Principle)

开闭原则的基础。面向接口编程,依赖于抽象而不依赖于具体。

接口隔离原则

(Interface Segregation Principle)

每个接口中不存在子类用不到却必须实现的方法,如果不然,就要将接口拆分。使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好。需要专门的接口(约束接口)

迪米特法则(最少知道原则)

(Demeter Principle)

一个类对自己依赖的类知道的越少越好。也就是说无论被依赖的类多么复杂,都应该将逻辑封装在方法的内部,通过public方法提供给外部。在《程序员修炼之道》中有提及。弊端就是会产生很多中介类,会增加系统的复杂度。

通俗表述:“不要和陌生人说话”,社恐原则

合成复用原则

(Composite Reuse Principle)

尽量首先使用合成/聚合的方式,而不是使用继承。

也可以看下面这张图,总结出来的重点(更加直观,后面的描述必须记住):

较好的软件应该具有的特性

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/725126.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存