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()