总体来说设计模式分为三大类(java中一般认为有23种设计模式):
- 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
- 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
- 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
String的实现采用了享元模式
Java IO类在设计的时候采用了装饰者模式
NIO非阻塞的实现采用了反应器设计模式
单例模式
作用:保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只有一个(也可以不存在)
分类:懒汉式和饿汉式
单例模式的从实现步骤上来讲,分为三步:
- 构造方法私有,保证无法从外部通过 new 的方式创建对象
- 对外提供获取该类实例的静态方法
- 类的内部创建该类的对象,通过第 2 步的静态方法返回
饿汉式:
public class Singleton {
// 直接创建对象
public static Singleton instance = new Singleton();
// 私有化构造函数
private Singleton() {
}
// 返回对象实例
public static Singleton getInstance() {
return instance;
}
}
懒汉式
package JBDesignPattern;
public class Singleton {
// 声明变量
private static volatile Singleton singleton = null;
// 私有构造函数
private Singleton() {
}
// 提供对外方法
public static Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}