深入理解23种设计模式目录导学
趁着有时间对这段时间学习的设计模式笔记进行整理,欢迎阅读的同学指出不足之处,有不懂的也可以留言交流喔😘😘
设计模式的概述
1、 为什么会有设计模式?
2、什么是设计模式?
设计模式的七大原则
设计模式的原则,其实就是程序员在设计 设计模式 时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么这样设计的依据)
设计模式原则之一:单一职责原则
设计模式原则之二:接口隔离原则
设计模式原则之三:依赖倒转原则
设计模式原则之四:里氏替换原则
设计模式原则之五:开闭原则
设计模式原则之六:迪米特法则
设计模式原则之七:合成复用原则
一般面试的时候面试官会问你都会哪些设计模式啊?说说你最熟悉的几个设计模式?哪些设计模式是最常见的啊?(一些比较偏僻的设计模式暂时先了解个大概即可)
为什么单例模式容易成为面试官喜欢问的问题就是因为它简单,但是面试官想通过它的简单体现出你的不简单来,想了解你对单例模式的独特见解。
一般问单例的话都会从你知道哪几种单例的写法啊?这些写法你都是死记的吗?(目的可能是看看你对这些单例模式写法之间的关联是什么,哪种写法解决了什么问题,慢慢引出最优的写法)
设计模式的三大类
创建型模式
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。
这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。
创建型模式分为:
单例模式
1、单例模式详解
工厂模式
1、工厂模式概述
2、简单工厂模式
(简单工厂不是一种设计模式(不属于23种),反而比较像是一种编程习惯。要真把它归类为设计模式的话,那只能说它是工厂方法的一种)
3、工厂方法模式
4、抽象工厂模式
5、工厂模式的扩展
6、
原型模式
1、原型模式详解
建造者模式
七种结构型模式
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。
由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。
结构型模式分为以下 7 种:
适配器模式提供一种机制改变原来不适合使用的接口,使之适合现在的应用;适配器模式还可以在众多原有接口的基础上新建一个接口,该新接口包含了从原有接口中精选的方法。
外观模式将新建一个外观类,该外观类通过调用原有的类库中众多的类的方式,实现外观类的所有方法。该外观类包含了某类特殊应用所需的所有方法
桥接模式将系统设计为抽象部分与实现部分,由抽象部分调用实现部分,以便使系统在抽象与实现两个维度都可以独立扩展。
代理模式
1、静态代理、JDK动态代理、CGLIB动态代理三种代理模式详解
适配器模式
装饰者模式
1、
桥接模式
1、
外观模式
组合模式
组合模式将一个或者多个相似的对象构成组合对象 各个对象有相似的功能。该模式以相同的方式对待单独的对象与一组对象,即组合对象 例如,等同地对待树的叶子结点与树枝结点。
1、组合模式详解
享元模式
十一种行为型模式
行为型模式更侧重于关注类或对象之间的通信模式,关心算法和对象之间的责任分配,解释对象之间是怎样进行交互的,它描述为了完成一些任务,完成任务的步骤是如何划分不同的对象,以及不同的类和对象之间是如何互相发送消息的。
行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。
命令模式将操作请求封装在对象中,这样它就可以作为参数来传递,并可以被存储在历史操作类表中 以实现取消和重做操作;
中介者模式通过在对象间引入一个中介对象,避免对象间的显式引用;
策略模式是将算法封装到对象中,这样可方便指定或改变一个对象使用的算法;
模板方法模式
1、
策略模式
1、策略模式详解
命令模式
1、命令模式详解
职责链模式
状态模式
1、状态模式详解
观察者模式
状态模式****封装了兑现过的状态,使得当对象的状态发生变化时 该对象可以改变自身的行为(状态变化时改变行为);
1、观察者模式详解
中介者模式
1、中介者模式详解
迭代器模式
迭代器模式抽象了访问和遍历一个集合中的对象的方式;
1、迭代器模式详解
访问者模式
访问者模式封装了分布于多个类之间的行为;
1、访问者模式详解
- 备忘录模式
- 解释器模式
以上 11 种行为型模式,除了模板方法模式和解释器模式是类行为型模式,其他的全部属于对象行为型模式。
按照大多人的说法,其实还有两类模式:并发型模式和线程池模式。