设计模式之模板方法

来源:互联网 发布:java unix时间戳 编辑:程序博客网 时间:2024/05/17 23:58

跟策略方法类似,就是换方法

public class App {    public static void main(String[] args) {        HalflingThief thief=new HalflingThief(new HitAndRunMethod());        thief.steal();        thief.changeMethod(new SubtleMethod());        thief.steal();    }}
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;    }}
public class HitAndRunMethod extends StealingMethod{    @Override    protected String pickTarget() {        return "old goblin woman";    }    @Override    protected void confuseTarget(String target) {        System.out.println("Approch the "+target+" from behind");    }    @Override    protected void stealTheItem(String target) {        System.out.println("Grab the handbag and run away fast");    }}
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);    }}
public class SubtleMethod extends StealingMethod {    @Override    protected String pickTarget() {        return "shop keeper";    }    @Override    protected void confuseTarget(String target) {        System.out.println("Approcch the "+target+" with tears running and hug him!");    }    @Override    protected void stealTheItem(String target) {        System.out.println("While in close contact grab the "+target+"'s wallet");    }}

当替换整个方法时,就是换了个模板

原创粉丝点击