JDK设计模式

创建型模式

1. 抽象工厂模式(Abstract Factory)

返回接口类型

java.sql.DriverManager#getConnection()

java.sql.Connection#createStatement()

java.sql.Statement#executeQuery()

2. 建造者模式(Builder)

java.lang.StringBuffer#append()

java.lang.StringBuilder#append()

3. 工厂方法模式(Factory Method)

返回类的实例

java.lang.Object#toString()

java.lang.Class#newInstance()

java.lang.Class#forName()

4. 单例模式 (Singleton)

java.lang.Runtime#getRuntime()  饿汉模式

sun.misc.Unsafe#getUnsafe()  CAS

 1 private static final Unsafe theUnsafe;
 2 ...
 3 private Unsafe() {
 4 }
 5 ...
 6 @CallerSensitive
 7 public static Unsafe getUnsafe() {
 8     Class var0 = Reflection.getCallerClass();
 9     if (!VM.isSystemDomainLoader(var0.getClassLoader())) {
10         throw new SecurityException("Unsafe");
11     } else {
12         return theUnsafe;
13     }
14 }

结构型模式

1. 适配器模式(Adapter)

java.io.InputStreamReader(InputStream)

java.io.OutputStreamWriter(OutputStream)

2. 装饰模式(Decorator)

java.io.BufferedInputStream(InputStream)

java.io.BufferedOutputStream(OutputStream)

3. 享元模式(Flyweight)

减少重复对象的创建——共享对象的不可变性

java.lang.Integer#valueOf(int)

1 public static Integer valueOf(int i) {
2     if (i >= IntegerCache.low && i <= IntegerCache.high)
3             return IntegerCache.cache[i + (-IntegerCache.low)];//[-128,127]
4     return new Integer(i);
5 }

java.lang.Boolean#valueOf(boolean)

字符串常量池

4. 代理模式(Proxy)

java.lang.reflect.Proxy

行为型模式

1. 职责链模式(Chain of Responsibility)

java.util.logging.Logger#log()

2. 解释器模式(Interpreter)

java.util.Pattern

3. 迭代器模式(Iterator)

提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露对象的内部表示

java.util.Iterator

4. 观察者模式(Observer)

java.util.EventListener (所有子类)

5. 策略模式(Strategy)

java.util.Comparator#compare()

 

posted @ 2018-03-21 17:50  sakura1027  阅读(228)  评论(0编辑  收藏  举报