JDK 源码 阅读 - 3 - 设计模式 - 结构型模式

1.适配器(Adapter)

  • java.util.Arrays$ArrayList(java.util.Arrays#asList());

 这里要特别注意,这里的ArrayList是Arrays的内部类不是java.util.ArrayList.这里的ArrayList是外部不可见的,用来把一个array适配成List.

 JDK 源码 阅读 - 3 - 设计模式 - 结构型模式

Sample:

String a[] = new String[]{"123","abc","xyz","ddd"};   
List list = Arrays.asList(a);


  • java.io.InputStreamReader(InputStream)

 InputStream --> Reader

JDK 源码 阅读 - 3 - 设计模式 - 结构型模式

 

  • java.io.OutputStreamWriter(OutputStream) (returns a Writer)

    参见上两个


2.组合模式(Composite)

  • java.awt.Container#add(Component) 

 JDK 源码 阅读 - 3 - 设计模式 - 结构型模式


3.装饰器(Decorator)

  • 所有 java.io.InputStreamOutputStreamReader 跟 Writer 的子类有一个构造函数接受同类型的实例,下面用一个例子来图示.

JDK 源码 阅读 - 3 - 设计模式 - 结构型模式

  • 还参见java.util.Collections, 的 checkedXXX()synchronizedXXX() ,unmodifiableXXX()方法.


4.外观模式(Facade)

  • JDBC中的IConnection等接口


5.享元模式(Flyweight)

  • java.lang.Integer#valueOf(int) (BooleanByteCharacterShortLong)

6.代理模式(Proxy)

  • java.lang.reflect.Proxy