1. 装饰者模式
- 装饰者模式:在包装类的构造方法传入被包装对象,并在类中类似重写被包装类的方法,对原有方法进行升级(不需要升级的方法调用原有方法)
- 实现步骤:定义被装饰类引用>>构造方法中传入被装饰对象>>对原有功能升级
- 好处:相对于继承关系,耦合性不强
2. 单例模式
- 单例模式:保证类在内存中只有一个对象
- 实现步骤:私有构造方法,在类中定义私有的本类对象,提供静态的公共访问方法
- 实现方式
- 饿汉式:声明时创建对象
- 懒汉式:采用延迟加载思想,在访问时创建对象
- 区别:饿汉式以空间换时间,懒汉式以时间换空间;懒汉式在多线程访问时存在线程安全问题,可能会创建多个对象
- 简化实现方式:私有构造方法,定义公有的本类对象并使用
final修饰
3. 简单工厂模式
- 简单工厂模式:又称为静态工厂方法模式;由一个具体的工厂类负责创建类的对象,类中提供静态方法返回具体对象
- 优点:客户端不需要再负责对象的创建,从而明确了各个类的职责
- 缺点:工厂类负责所有对象的创建,如果有新的对象增加或创建方式改变,需要对工厂类进行修改,不利于后期维护
4. 工厂方法模式
- 定义一个抽象的工厂类,里面包含创建对象的接口,具体创建对象的工作由继承抽象工厂类的具体类实现
- 优点:客户端不需要负责对象创建,从而明确各个类的职责,如果有新的对象增加,只需要增加一个具体的类和具体的工厂类即可,不影响已有的代码,后期维护容易,增强了系统的扩展性
- 缺点:需要额外编写代码,增加了工作量
5. 适配器模式
- 常见于监听器中,一个类实现了监听接口,但实现方法为空,并且该实现类为抽象类,不能被实例化;目的是为了简化操作,避免重写无用的方法
6. 模板模式
-
模板模式:定义一个算法的骨架,具体算法由子类实现
-
优点:具体的算法实现灵活
-
缺点:算法骨架修改需要修改抽象类
-
模板模式实现获取方法执行时间
abstract class GetTime { /* 计算执行时间 */ public void getTime() { long start = System.currentTimeMillis(); fun(); long end = System.currentTimeMillis(); System.out.println(end - start); } /* 需要获取执行时间的方法 */ public abstract void fun(); }