模板模式

模板模式

背景:现在做着的项目需要把收到的字节流Message封装成对象,方便上层逻辑处理,但是每一条信息的格式又不完全一样,所以就想到了用模板模式来处理,其实我写的都是没有觉得这是个模板模式,后来翻书才知道..

首先是定义一个抽象父类:

/**
*
* ByteBuf是netty里的一个类,和nio里的ByteBuffer一个功能
**/
public abstract class InMessage {
    private byte type;
    private int struct;
    private short applicationAddress;
    
    public InMessage(byte type,int struct, short applicationAddress, ByteBuf buf) {
        super();
        this.type = type;
        this.struct = struct;
        this.applicationAddress = applicationAddress;
        generateData(buf);
    }
    
    //所有继承InMessage的子类都需要重写generateData方法,这里其实才是实际上封装对象处理逻辑的地方
    protected abstract void generateData(ByteBuf buf);

}

总结:

模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。

你可能感兴趣的:(模板模式)