Base Time-Design Patterns
Base
2016-12
系列博文
Base Time-Http Protocol
Base Time-Bitmap
Base Time-Database
Base Time-Java
Base Time-Design Patterns
Base Time-Java Algorithms
设计模式简单回顾
- Build 创建型模式
- Factory Method 工厂方法模式
- Abstract Factory 抽象工厂模式
- Singleton 单例模式
- Build 建造者模式
- Prototype 原型模式
- Adapter 适配器模式
- Class Adapter 类适配器
- Object Adapter 对象适配器
- Decorator 装饰器模式
- Proxy 代理模式
- Facade 外观模式
- Bridge 桥接模式
- Composite 组合模式
- Flyweight 享元模式
- Interface Adapter 接口适配器
- Relationship 关系型模式
- 父类与子类
- Strategy 策略模式
- Template Method 模板方法模式
- 类与类
- Observer 观察者模式
- Iterator 迭代子模式
- Chain of Responsibility 责任链模式
- Command 命令模式
- 类的状态
- 通过中间类
- Visitor 访问者模式
- Mediator 中介模式
- Interpreter 解释器模式
创建型模式
Factory Method 工厂方法模式
Abstract Factory 抽象工厂
Singleton 单例模式
什么场景使用单例模式?
类似交易所的核心交易引擎以及军队指挥系统等只能存在一个实例的场景,试想,如果有多个实例存在,岂不是乱套了。
单例模式有什么好处?
- 某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
- 省去了new操作符,降低了系统内存的使用频率,减轻GC压力
实例
public static Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
有部分博客写的单例是这样子的
public static Singleton getInstance() {
if (instance == null) {
synchronized (instance) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
上面的代码,对一个null的instance加锁,所以不要尽信书。
Build 建造者模式
Prototype 原型模式
适配器模式
Class Adapter 类适配器
Decorator 装饰器模式
Proxy 代理模式
Facade 外观模式
Bridge 桥接模式
Composite 组合模式
Flyweight 享元模式
关系型模式
父类与子类
Strategy 策略模式
Template Method 模板方法模式
类与类
Observer 观察者模式
Iterator 迭代子模式
Chain of Responsibility 责任链模式
Command 命令模式
类的状态
Memento 备忘录模式
State 状态模式
通过中间类
Visitor 访问者模式
Interpreter 解释器模式
参考博文
java常用设计模式
设计模式(Design Patterns)
里氏替换原则