二十三种设计模式(java版)之Template Method

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:11   786   0

目的:

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

元素:

AbstractClass(抽象类):实现主要算法的结构,具体的步骤可以声明为抽象方法由子类实现。
ConcreteClass(具体类):实现抽象类的方法,定义具体的方法细节。

类图:


代码示例:

AbstractDisplay.java
public abstract class AbstractDisplay {
 public abstract void preprint();
 public abstract void print();
 public abstract void postprint();
 public final void display()
 {
  preprint();
  print();
  postprint();
 }
}

StringDisplay.java
public class StringDisplay extends AbstractDisplay{

 private String str;
 
 public StringDisplay(String str)
 {
  this.str = str;
 }
 @Override
 public void postprint() {
  // TODO Auto-generated method stub
  System.out.println("+++++++++++++");
 }

 @Override
 public void preprint() {
  // TODO Auto-generated method stub
  System.out.println("+++++++++++++");
 }

 @Override
 public void print() {
  // TODO Auto-generated method stub
  System.out.println("+"+str+"+");
 }

}

Main.java
public class Main {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  AbstractDisplay a = new StringDisplay("hello,world");
  a.display();
 }

}


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP