跳至主要內容

设计模式

Yang大约 2 分钟JavaJava基础

设计模式指的是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验总结

创建型模式

关注对象创建过程的模式

单例模式

目的:使得类的一个对象成为该类系统中的唯一实例

定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供

要点

  • 某个类只能有一个实例
  • 必须自行创建实例
  • 必须自行向整个系统提供这个实例

实现

  • 只提供私有的构造方法
  • 含有一个该类的静态私有对象
  • 提供一个静态的公有方法用于创建和获取静态私有对象

优点

  • 在内存中只有一个对象,节省内存空间
  • 避免频繁的创建销毁对象,提高性能

缺点

  • 扩展比较困难
  • 实例化后对象长期不用,系统将默认为垃圾进行回收,造成状态丢失

使用场景

  • 创建对象时占用资源过多,但同时又需要用到该类对象
  • 对系统内资源要求统一读写,如读写配置信息
  • 当多个实例存在可能引起程序逻辑错误,如号码生成器

饿汉式

在对象创建过程中立即完成实例化,空间换时间,线程安全

public class SingletonOne {
    private SingletonOne() {}
    private static SingletonOne instance = new SingletonOne();
    public static SingletonOne getInstance() {
        return instance;
    }
}

懒汉式

在对象创建过程中不实例化,在静态共有方法中再实例化,时间换空间,存在线程风险

public class SingletonOne {
    private SingletonOne() {}
    private static SingletonOne instance = null;
    public static SingletonOne getInstance() {
        if (instance == null)
            instance = new SingletonOne();
        return instance;
    }
}

工厂方法模式
建造者模式
抽象工厂模式
原型模式

组合型模式

关注类和对象组合的模式

桥接模式
装饰器模式
代理模式
组合模式
享元模式
外观模式
适配器模式

行为型模式

关注对象之间的通信过程

备忘录模式
状态模式
解释器模式
命令模式
模板方法模式
访问者模式
中介者模式
迭代子模式
观察者模式
策略模式
责任链模式

上次编辑于:
贡献者: sunzhenyang