java设计模式进阶_template-method

原创 2016年08月30日 10:32:11

这里写图片描述

//
//
//  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设计模式进阶_factory-method

// // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : Blacksm...

Java设计模式—模板方法(Template Method)

模板是指在薄片塑料板上面写字后挖空,再使用毛笔或色笔涂满挖空部分,就能看到纯手工而以不失工整的字样,看到模板上的挖空形状,马上就知道最后会变出什么样子的字,不过实际上所显现出来的字样还是要依所使用的画...

Java设计模式透析之 —— 模板方法(Template Method)

原文地址:http://blog.csdn.net/guolin_blog/article/details/8744002 今天你还是像往常一样来上班,一如既往地开始了你的编程工作。...

Java设计模式学习笔记之 —— 模板方法(Template Method)

跟随郭霖大神的脚步学习设计模式,真是通俗易懂~赞: 原文出处:http://blog.csdn.net/guolin_blog/article/details/8744002模板方法: 定义一个操...

Java设计模式透析之 —— 模板方法(Template Method)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744002 今天你还是像往常一样来上班,一如既往地开始了你的编程工作。 ...

Java设计模式透析之 —— 模板方法(Template Method)

今天你还是像往常一样来上班,一如既往地开始了你的编程工作。 项目经理告诉你,今天想在服务器端增加一个新功能,希望写一个方法,能对Book对象进行处理,将Book对象的所有字段以XML格式进行包装...

Java设计模式透析之 —— 模板方法(Template Method)

本文转自郭神博客:http://blog.csdn.net/guolin_blog/article/details/8744002 今天你还是像往常一样来上班,一如既往地开始了你的编程工作。 ...

Java设计模式透析之 —— 模板方法(Template Method)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744002 今天你还是像往常一样来上班,一如既往地开始了你的编程工作。 ...

Java设计模式透析之 —— 模板方法(Template Method)

版权声明:本文出自郭霖的博客,转载必须注明出处。 转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744002 今天你还是像...

Java设计模式透析之 —— 模板方法(Template Method)

今天你还是像往常一样来上班,一如既往地开始了你的编程工作。 项目经理告诉你,今天想在服务器端增加一个新功能,希望写一个方法,能对Book对象进行处理,将Book对象的所有字段以XML格式进行包装,这样...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)