设计模式实践-模版方法模式
场景
解析不同协议
实现代码
协议解析抽象类
namespace DesignPatterns.TemplateMethod
{
/// <summary>
/// 抽象解包类
/// </summary>
public abstract class AbstractUnpack
{
/// <summary>
/// 解析数据
/// </summary>
public abstract void UnpackData();
/// <summary>
/// 解包地址
/// </summary>
protected void UnpackAddress()
{
Console.WriteLine("解包地址");
}
/// <summary>
/// 校验数据
/// </summary>
protected void CheckData()
{
Console.WriteLine("验证CRC");
}
}
}
A协议解析类
namespace DesignPatterns.TemplateMethod
{
/// <summary>
/// A协议解包类
/// </summary>
public class UnpackA : AbstractUnpack
{
/// <summary>
/// 解包数据
/// </summary>
public override void UnpackData()
{
this.UnpackAddress();
this.CheckData();
Console.WriteLine("解包A协议数据");
}
}
}
B协议解析类
namespace DesignPatterns.TemplateMethod
{
/// <summary>
/// B协议解包类
/// </summary>
public class UnpackB : AbstractUnpack
{
/// <summary>
/// 解包数据
/// </summary>
public override void UnpackData()
{
this.UnpackAddress();
this.CheckData();
Console.WriteLine("解包A协议数据");
}
}
}
相关调用
AbstractUnpack unpackA = new UnpackA();
AbstractUnpack unpackB = new UnpackB();
unpackA.UnpackData();
unpackB.UnpackData();
Out:
解包地址
验证CRC
解包A协议数据
解包地址
验证CRC
解包A协议数据