设计模式概述
- 什么是设计模式
设计模式(Design Pattern)是一套可以重复利用的解决方案 - 设计模式有哪些
- GoF设计模式(Gang of Four):来源于四人合著的《Design Patterns …》一书。包含23种设计模式(单例模式等)
- 架构设计模式(Architectural Pattern):主要用于软件系统的整体架构设计。包括MVC、REST架构等
- 企业级设计模式(Enterprise Pattern):主要用于企业级应用程序设计,包括基于服务的架构(SOA)、企业集成模式(EIP)、业务流程建模(BPM)和企业规则引擎(BRE)等。
- 领域驱动设计模式(Domain Driven Design Pattern):主要用于领域建模和开发
- 并发设计模式(Concurrency Pattern):主要用于处理并发性问题
- 数据访问模式(Data Access Pattern):主要用于处理数据访问层次结构,包括数据访问对象(DAO)、仓库模式和活动记录模式等
- GoF设计模式的分类
- 创建型:主要解决对象的创建问题(单例模式等)
- 结构型:通过设计和构建对象之间的关系,以达到更好的重用性、扩展性和灵活性
- 行为型:主要用于处理对象之间的算法和责任分配
单例模式之1:饿汉式单例模式
类加载时对象就创建好了,不管这个对象用还是不用,提前把对象创建好。
- 步骤
- 构造参数私有化
- 对外提供一个公开的静态方法
- 定义一个静态变量,在类加载的时候,初始化静态变量(因为静态变量只初始化一次)
public class SinglePattern {
// 只在类加载时执行,只会有一个对象
private static SinglePattern s = new SinglePattern();
// 私有化构造方法
private SinglePattern(){
}
// 定义一个返回对象的静态方法
public static SinglePattern get(){
return s;
}
}
单例模式之2:懒汉式单例模式
用到这个对象的时候再创建对象,不在类加载的时候创建对象
- 步骤
- 构造方法私有化
- 对外提供一个静态方法,通过这个方法可以获取到该对象
- 提供一个静态变量,但是这个静态变量为
null
public class Singleton {
// 提供一个静态变量,但是这个变量值为null
private static Singleton s;
// 构造方法私有化
private Singleton(){}
// 在需要时,再通过判断对象是否为null来创建对象,已经创建过就不再创建
public static Singleton get(){
if (s == null){
s = new Singleton();
}
return s;
}