设计模式:
1、工厂模式:
- 简单工厂模式
角色:工厂、抽象产品、具体产品
工厂 根据传入产品类型,生产具体的产品。
- 工厂方法模式
简单工厂模式中,工厂职责太重,而且当新增产品时,需要修改工厂方法内部实现(违反 开闭原则)
角色:抽象工厂、具体工厂、抽象产品、具体产品
- 抽象工厂模式
工厂方法模式中,一个工厂只负责生产一种产品,当新增产品时,具体产品类和具体工厂类成对增加。
考虑可以让一个工厂生产多个产品(产品族),例如:电器工厂,可以生产 电视、空调、洗衣机这三种产品,这三种产品构成了
一个产品族。
产品等级结构:对于一个产品,例如 电视,可以有 TCL LG 小米等。TCL电视、LG电视、小米电视构成了一个产品等级结构。
2、单例模式
- 饿汉模式
系统加载时,就实例化 单例对象(线程安全)
- 饱汉模式
需要时,实例化对象。(多线程环境下,需要确保线程安全)
- 静态内部类
静态内部类 持有单例对象(线程安全)
3、代理
- 静态代理
- 动态代理:代理类 通过反射动态生成;只能代理实现了接口的类
- CGLIB:针对类来实现代理,原理是对指定的目标类生成一个子类,并覆盖其中方法进行增强,
因为采用的是继承,所以不能对final修饰的类进行代理。