23种设计模式
1、创建型
单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式
2、结构型
适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
3、行为型
模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解析器模式、状态模式、策略模式
、职责链模式、访问者模式
1.工厂模式
核心本质:
1. 实例化对象不使用new,用工厂方法代替。
2.将选择实现类,创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。
三种模式
1.简单工厂模式
用来生产同一等级结构中的任意产品(对于增加新的产品,需要覆盖已有代码)
虽然某种程度上不符合设计原则【开闭原则】,但是实际上使用最多。
2. 工厂方法模式
用来生产同一等级结构中的固定产品(支持增加任意产品)
不修改已有类的前提下,通过添加新的工厂来实现扩展。
3.抽象工厂模式
围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。
不可以增加产品,但是可以增加产品族。
2.建造者模式
定义:将一个复杂对象的构建和它的实现分离,使同样的构建过程可以构建不同的表示。
主要作用:在用户不知道对象的构造过程和细节的情况下直接创建复杂的对象。
3.原型模式
原型模式就是用户不需求通过new获取对象,而是通过复制一个存在的类来创建对象。
要实现复制,被复制的类要实现clone able接口,并重写clone方法。
注意:
默认情况下clone,是浅拷贝:【基本数据类型数值传递,引用类型引用传递,并没有新建对象,复制出来的对象和原来对象的引用类型指向同一个内存地址】,可以在重写clone中,实现新建引用对象,实现深拷贝。
Spring对象创建就有单例模式,原型模式。
4.适配器模式
比如网线,转接器,电脑。网线不能直接连接电脑,要结果转接器适配后才能连接。
有三个角色
目标接口【电脑】:客户所期待的接口,目标可以是具体的或抽象的类,也可以是接口。
需求适配的类【网线】:需要适配的类或适配器类。
适配器【转接器】:通过包装一个需要适配的对象,将原接口转换为目标对象。
5.桥接模式
桥接模式将抽象部分与他的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体模式或接口模式。
桥接模式:
多继承:
,于多继承相比,桥接模式,是代码量大大减少,并且扩展更加灵活。
桥接模式的例子:
JDBC,不同的数据库,都有相应的实现
Java的虚拟机: