第三周总结
什么是设计模式
描述同一类问题的通用解决方案
从功能分,主要分为三类:创建模式,结构模式,行为模式
从方式分,主要分为两类:以继承方式实现(静态),以组合方式实现(动态)
简单工厂模式
Factory:工厂类,简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
IProduct:抽象产品类,简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
Product:具体产品类,是简单工厂模式的创建目标
优点与缺点
优点:
客户端不再依赖产品的具体实现,统一由工厂管理
缺点:
切换产品需要修改工厂实现
改进一
修改工厂实现,使用反射根据具体的产品名称获取指定产品,产品的细节实现对客户端是透明的,需要客户端指定产品名称
改进二
使用外部配置文件指定产品,切换产品不需要修改代码,修改配置文件即可
单例模式
整个系统只有一个实例,并且自行实例化向整个系统提供实例
保证产生单一实例,需注意以下两点:
私有构造函数,不允许通过new创建对象
防止多线程创建多个实例
单例模式主要分为懒汉式和饿汉式两种
懒汉式
饿汉式
适配器模式
把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作
适配器模式的形式分为:类的适配器模式 & 对象的适配器模式
类适配器
对象适配器
模版方法模式
基类负责算法的轮廓和骨架
子类负责算法的具体实现
策略模式
系统需要在多种算法中选择一种,客户端方便根据外部条件选择不同策略来解决不同问题
组合模式
也称为 整体-部分(Part-Whole)模式,它的宗旨是通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口进行表示,使得客户对单个对象和组合对象的使用具有一致性。
装饰器模式
在不改变对客户端的接口前提下扩展现有对象的功能,动态地将责任附加到对象上,装饰器会形成一条装饰链
spring中的设计模式
依赖注入
spring中对象与对象之间的依赖实例化并不是手动new出对象进行赋值,而是由spring生成依赖的对象,然后将对象注入到指定对象中,主要实现原理是通过反射构造被注入对象的set方法进行依赖注入
单例模式
先从缓存Map中获取类的实例
如果为空则加锁通过工厂获取实例并缓存到Map中
评论