//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : StealingMethod.java
// @ Date : 2016/8/30
// @ Author :
//
//
public abstract class StealingMethod {
protected abstract String pickTarget();
protected abstract void confuseTarget(String target);
protected abstract void stealTheItem(String target);
public void steal() {
String target = pickTarget();
System.out.println("The target has been chosen as " + target + ".");
confuseTarget(target);
stealTheItem(target);
}
}
//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : SubtleMethod.java
// @ Date : 2016/8/30
// @ Author :
//
//
public class SubtleMethod extends StealingMethod {
protected String pickTarget() {
return "shop keeper";
}
protected void confuseTarget(String target) {
System.out.println("Approach the " + target
+ " with tears running and hug him!");
}
protected void stealTheItem(String target) {
System.out.println("While in close contact grab the " + target +
"'s wallet.");
}
}
//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : HalflingThief.java
// @ Date : 2016/8/30
// @ Author :
//
//
public class HalflingThief {
private StealingMethod method;
public HalflingThief(StealingMethod method)
{
this.method = method;
}
public void steal() {
method.steal();
}
public void changeMethod(StealingMethod method) {
this.method = method;
}
}
//
//
// Generated by StarUML(tm) Java Add-In
//
// @ Project : Untitled
// @ File Name : HitAndRunMethod.java
// @ Date : 2016/8/30
// @ Author :
//
//
public class HitAndRunMethod extends StealingMethod {
protected String pickTarget() {
return "old goblin woman";
}
protected void confuseTarget(String target) {
System.out.println("Approach the " + target + " from behind.");
}
protected void stealTheItem(String target) {
System.out.println("Grab the handbag and run away fast!");
}
}
/**
* 一个算法的模板方法定义了一个框架。算法提供实现子类的空白部分。
* 在这个例子中HalflingThief包含StealingMethod,可以改变。
* 第一个小偷与SubtleMethod HitAndRunMethod然后。
*
*/
public class App {
public static void main(String[] args) {
HalflingThief thief = new HalflingThief(new HitAndRunMethod());
thief.steal();
thief.changeMethod(new SubtleMethod());
thief.steal();
}
}
java设计模式进阶_template-method
最新推荐文章于 2025-03-31 23:40:23 发布