Patterns in Java
This article is contributed by Wang HaiLong.
Preface
The Java class library heavily employs Design Patterns. This article discusses such scenarios.
Iterator
Collection/Iterator in Java 2 is Iterator Pattern.
Decorator and Bridge
Let's see some Java code about filter stream.
Reading Socket
ServerSocket s = new ServerSocket(8189);
Socket incoming = s.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
Reading data from file by buffering mode
FileInputStream fin = new FileInputStream("employee.dat");
BufferedInputStream bin = new BufferedInputStream(fin);
DataInputStream din = new DataInputStream(bin);
Reading data in advance and by buffering mode
PushbackInputStream pbin = new PushbackInputStream(new BufferedInputStream(new FileInputStream("employee.dat")));
Reading data from zipped file
ZipInputStream zin = new ZipInputStream(new FileInputStream("employee.zip"));
DataInputStream din = new DataInputStream(zin);
From different points of view, we can say that the above code uses either Decorator Pattern or Bridge Pattern.
From the Decorator view, filter stream is Decorator, the parameter passed to its constructor is Component (Decorator and Component are participants in Decorator Pattern).
From the Bridge view, filter stream is Abstraction, the parameter passed to its constructor is Implementor (Abstraction and Implementor are participants in Bridge Pattern).
Adapter
There are Classes named "Adapter" such as WindowAdapter, ComponentAdapter and so on. But the aim of these Adapters is to implement default actions for listeners.
Observer
The Event mechanics in Java can be described as Observer Pattern. Listeners are Observers, and Event.getSource() return the Observable. One Observer can observe more than one Observable; one Observable can be observed by more than one Observer, which is called "Multicast".
Appendix
Some great books about Design Patterns:
<<Design Patterns>> by Zurich, Sydney, Urbana, Hawthorne;
<<Thinking in C++>> and <<Thinking in Java >> by Bruce Eckel;
<<The Design Patterns Java Companion>> by James W. Cooper.
本文探讨Java类库中设计模式的应用场景。介绍了Java 2中的Collection/Iterator属于迭代器模式;以过滤流代码为例,从装饰器和桥接模式角度分析;还提到适配器类用于实现监听器默认动作,Java的事件机制符合观察者模式,并推荐了设计模式相关书籍。
1737

被折叠的 条评论
为什么被折叠?



