• 技术文章 >Java >java教程

    案例详解java23种设计模式:模版方法模式(附代码)

    php是最好的语言php是最好的语言2018-07-30 10:52:49原创663

    定义

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

    角色

    该设计模式的角色划分较为简单

    抽象模版类又包含了这样几个方法:模版方法,具体方法,抽象方法,勾子方法。

    决定了算法的实现步骤,该方法中调用了具体方法,待实现的抽象方法,勾子方法等。是算法执行的一个模版。

    具体方法是算法中较稳稳定的部分,所以抽象类中给出了方法的具体实现。

    抽象方法正是定义中所说的延迟到子类实现的方法。

    一般模版方法会给出默认实现,子类中看情况对这个方法进行覆盖重写。

    UML

    实现过程

    /**
     * Created by tiantian on 2018/7/28
     */public abstract class AbstractTemplateMethod {
    
        public void templateMethod() {
            implementedMethod();
            abstractMethod();
            hookMethod();        // ... more than method invoke
        }    public void anotherTemplateMethod() {        // do other things
        }    public abstract void abstractMethod();    public void hookMethod() {}    public void implementedMethod() {
            System.out.println("I have been implemented in TemplateMethod class.");
        }    // ... more than method abstract or implemented.}
    /**
     * Created by tiantian on 2018/7/28
     */public class ConcreteTempleteMethod extends AbstractTemplateMethod {
        @Override
        public void abstractMethod() {
            System.out.println("Do something");
        }    @Override
        public void hookMethod() {
            System.out.println("Do something in hookMethod");
        }
    }

    定义

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

    角色

    该设计模式的角色划分较为简单

    抽象模版类又包含了这样几个方法:模版方法,具体方法,抽象方法,勾子方法。

    决定了算法的实现步骤,该方法中调用了具体方法,待实现的抽象方法,勾子方法等。是算法执行的一个模版。

    具体方法是算法中较稳稳定的部分,所以抽象类中给出了方法的具体实现。

    抽象方法正是定义中所说的延迟到子类实现的方法。

    一般模版方法会给出默认实现,子类中看情况对这个方法进行覆盖重写。

    UML

    实现过程

    /**
     * Created by tiantian on 2018/7/28
     */public abstract class AbstractTemplateMethod {
    
        public void templateMethod() {
            implementedMethod();
            abstractMethod();
            hookMethod();        // ... more than method invoke
        }    public void anotherTemplateMethod() {        // do other things
        }    public abstract void abstractMethod();    public void hookMethod() {}    public void implementedMethod() {
            System.out.println("I have been implemented in TemplateMethod class.");
        }    // ... more than method abstract or implemented.}
    /**
     * Created by tiantian on 2018/7/28
     */public class ConcreteTempleteMethod extends AbstractTemplateMethod {
        @Override
        public void abstractMethod() {
            System.out.println("Do something");
        }    @Override
        public void hookMethod() {
            System.out.println("Do something in hookMethod");
        }
    }

    相关文章:

    Java设计模式-设计模式的六种原则

    JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    相关视频:

    设计模式

    以上就是案例详解java23种设计模式:模版方法模式(附代码)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:java 设计模式
    上一篇:Java NIO系列教程3: Buffer的基本用法 下一篇:这十道10道Java题你会做吗?考考你的水平
    大前端线上培训班

    相关文章推荐

    • 理解java8中java.util.function.*pojo反射新方法(附代码)• 浅析安卓app和微信授权登录及分享完整对接(代码分享)• 教你一招搞定时序数据库在Spring Boot中的使用• 一招教你使用java快速创建Map(代码分享)• PlayFramework 完整实现一个APP(十一)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网