在文章之初,附上我在网上看的资料的链接:
博客: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) | 尽量首先使用合成/聚合的方式,而不是使用继承。 |
也可以看下面这张图,总结出来的重点(更加直观,后面的描述必须记住):
较好的软件应该具有的特性欢迎分享,转载请注明来源:内存溢出
评论列表(0条)