设计模式实践-装饰器
场景
使用HongDian DTU后需要在原本发送的逻辑前先发送HongDian规定的内容
实现代码
DTU组件接口:
namespace DesignPatterns.Decorator
{
/// <summary>
/// DTU组件接口
/// </summary>
public interface IDtuComponent
{
/// <summary>
/// 向DTU发送数据
/// </summary>
void SendData();
}
}
标准DTU组件实现:
namespace DesignPatterns.Decorator
{
/// <summary>
/// 标准DTU组件
/// </summary>
public class StandDtuComponent : IDtuComponent
{
/// <summary>
/// 向标准DTU发送数据
/// </summary>
public void SendData()
{
Console.WriteLine("发送透明DTU数据");
}
}
}
宏电DTU组件实现:
namespace DesignPatterns.Decorator
{
/// <summary>
/// 宏电DTU组件
/// </summary>
public class HongDianDtu : IDtuComponent
{
/// <summary>
/// dtu组件
/// </summary>
private readonly IDtuComponent _dtuComponent;
/// <summary>
/// Initializes a new instance of the <see cref="HongDianDtu" /> class.
/// </summary>
/// <param name="dtuComponent">DTU组件</param>
public HongDianDtu(IDtuComponent dtuComponent)
{
this._dtuComponent = dtuComponent;
}
/// <summary>
/// 向宏电DTU发送数据
/// </summary>
public void SendData()
{
Console.WriteLine("发送宏电Dtu数据");
// some action
this._dtuComponent.SendData();
}
}
}
相关调用
IDtuComponent standDtu = new StandDtuComponent();
IDtuComponent hongDianDtu = new HongDianDtu(standDtu);
hongDianDtu.SendData();
Out:
发送宏电Dtu数据
发送透明DTU数据