设计模式实践-装饰器
场景
使用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数据
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号