- qingzi2534
- 等级: 初级会员

- 性别:

- 文章: 192
- 积分: 66
- 来自: 烟台

|
最后更新时间:2007-01-17 关键字: 实际处理交给子类
Template Method Pattern,父类指定处理大纲,子类规定具体内容的设计模式叫做模版方法模式。
下面的示例是反复输出5次同一个字符或字符串。
表3-1 类一览表
| 名称 |
说明 |
| AbstractDisplay |
只是现方法display的抽象类 |
| CharDisplay |
实现方法open,print,close的类 |
| StringDisplay |
实现方法open,print,close的类 |
| Main |
测试类 |
AbstractDisplay 抽象类
- public abstract class AbstractDisplay {
- public abstract void open();
- public abstract void print();
- public abstract void close();
- public final void display() {
- open();
- for( int i=0;i<5;i++)
- { print(); }
- close();
- }
- }
CharDispaly类
- public class CharDisplay extends AbstractDisplay {
- private char ch;
- public CharDisplay(char ch) {
- this.ch = ch;
- }
- public void open() {
- System.out.print("××");
- }
- public void print() {
- System.out.print(ch);
- }
- public void close() {
- System.out.print("××");
- }
- }
StringDispaly 类
- public class StringDisplay extends AbstractDisplay {
- private String string;
- private int width;
- public StringDisplay(String string) {
- this.string = string;
- this.width = string.getBytes().length; }
- public void open() {
- printLine();
- }
- public void print() {
- System.out.print("|"+string+"|");
- }
- public void close() {
- printLine(); }
- private void printLine() {
- System.out.print("+");
- for(int i = 0 ;i < width ; i++) {
- System.out.print("--");
- }
- System.out.println("+");
- } }
Main测试类
- public class Main {
- public static void main(String[] args) {
- AbstractDisplay d1 = new CharDisplay('H');
- AbstractDisplay d2 = new StringDisplay("Hello,World!");
- d1.display();
- d2.display();
- }
- }
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
| 返回顶楼 |
|
|
- qingzi2534
- 等级: 初级会员

- 性别:

- 文章: 192
- 积分: 66
- 来自: 烟台

|
输出的结果是:
××HHHHH××
+------------+
|Hello,world!|
|Hello,world!|
|Hello,world!|
|Hello,world!|
|Hello,world!|
+------------+
|
| 返回顶楼 |
|
|
- qingzi2534
- 等级: 初级会员

- 性别:

- 文章: 192
- 积分: 66
- 来自: 烟台

|
java.io.InputStream 类用到了这个模式。
可以看看源码,加深理解本模式。
|
| 返回顶楼 |
|
|