文档章节

模板模式

跨界王子
 跨界王子
发布于 2017/05/19 11:59
字数 294
阅读 2
收藏 0

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

为了确保子类不能重写(override)这个模板方法,应当使用final

 

package templatemethod;

public abstract class AbstractChannel {
    /**
     * 发送消息
     *
     * @param msg 消息
     * @return 状态码
     */
    public final int send(String msg) {

        this.serializer(msg);

        //发送
        System.out.println("发送消息 : " + msg);

        return 0;
    }


    /**
     * 序列化消息
     *
     * @param msg 消息
     */
    protected abstract void serializer(String msg);
}
package templatemethod;

public class ProtobufChannel extends AbstractChannel {
    @Override
    protected void serializer(String msg) {
        System.out.println("protobuf 序列化 : " + msg);
    }
}
package templatemethod;

public class JsonChannel extends AbstractChannel {
    @Override
    protected void serializer(String msg) {
        System.out.println("json 序列化 : " + msg);
    }
}
package templatemethod;

public class TemplateMethodClient {
    public static void main(String[] args) {
        String msg = "msg";

        AbstractChannel jsonChannel = new JsonChannel();
        jsonChannel.send(msg);

        System.out.println();

        AbstractChannel protobufChannel = new ProtobufChannel();
        protobufChannel.send(msg);
    }
}
json 序列化 : msg
发送消息 : msg

protobuf 序列化 : msg
发送消息 : msg

HttpServlet类提供了一个service()方法.这个方法调用了一个或是多个do方法,完成对客户端发起的请求的处理,这些do方法则是由具体的HttpServlet类提供的.那么这里的service()方法就是一个摸板方法。

© 著作权归作者所有

共有 人打赏支持
跨界王子
粉丝 0
博文 2
码字总数 530
作品 0
沈阳

暂无文章

记Structured Streaming 2.3.1的OOM排查过程

记Structured Streaming 2.3.1的OOM排查过程 缘起 最近在使用Structured Streaming开发一套自助配置SQL的来生成流式作业的平台,在测试的过程中发现有些作业长时间运行后会有Executor端的OOM...

纳兰清风
7分钟前
0
0
通过 websocket 连接 openfire

通过 websocket 连接 openfire 一、简介 老版本是需要安装websocket插件的。之前版本就不说了。 二、 引入XML与JSON互转的js <script src="lib/XML/ObjTree.js"></script><script src="lib......

lwenhao
11分钟前
0
0
MicropPython的学习,如何从0到1?

是Java还是C++ ? 是Go还是Python? 你为你最爱或者最熟悉的编程语言打Call了吗? Python在国外是一门非常热门的编程语言,近些年在国内也被发掘与追捧, Python的开放、简洁、黏合正符合了现发...

bodasisiter
12分钟前
0
0
Django框架17: Celery的使用

Celery介绍 1.什么是Celery Celery是一个python模块,它在官网的定义:Celery is asynchronous task queue/job based on distributed message passing. It is focused on real-time operatio......

代码打碟手
18分钟前
0
0
poi的excel解析工具类

import org.apache.commons.lang.StringUtils;import org.apache.commons.lang.time.DateFormatUtils;import org.apache.commons.lang.time.DateUtils;import org.apache.poi.hssf.use......

Sheav
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部