1. 单例模式
确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
要求:
- 构造方法私有,
- 只有一个实例,且实例是当前类的静态类成员变量
- 我们在提供一个静态方法向外界提供当前类的实例
应用场景
- 序列号生成器、web页面的计数器等待都可以使用单例模式。
- 同时如果创建某个对象需要消耗较多资源的话,比如访问 IO或者数据库资源的时候,也可以使用单例模式来减少资源的消耗。
分类
- 饿汉式:即在类加载的时候就进行实例化
- 懒汉式(双重检查锁):在刚开始,即在类加载的时候不进行实例化,在第一次使用的时候再进行实例化。(使用双重检查锁进行初始化的实例必须使用 volatile 关键字修饰)
2. 简单工厂模式
属于类的创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义了一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
-优点: 实现对象的创建和使用分离
- 缺点:不够灵活
3. 工厂模式
符合开闭原则:扩展由于修改,添加一个产品就要添加一个对应的工厂。
定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。