模板模式
模板模式
跨界王子 发表于7个月前
模板模式
  • 发表于 7个月前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

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

为了确保子类不能重写(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
×
跨界王子
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: