学习的点点滴滴

Email : 107311278@qq.com
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

策略模式

Posted on 2014-01-16 15:21  v薛定谔的猫v  阅读(105)  评论(0)    收藏  举报

说明:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

类图:

代码:

/*使用策略模式 对发送邮件不同角色的人进行不同内容格式设置*/
    /// <summary>
    /// 定义一个策略接口
    /// </summary>
    public abstract class Strategy
    {
        /// <summary>
        /// 发送邮件格式方法
        /// </summary>
        /// <param name="Content">内容</param>
        public abstract void SendEmailFormat(string Content);
        /// <summary>
        /// 发送短信格式方法
        /// </summary>
        /// <param name="Content">短信内容</param>
        public abstract void SendSmsFormat(string Content);
    }
    /// <summary>
    /// 定义发送格式策略 包装 发送内容的格式一 :为可以查看所有内容
    /// </summary>
    public class ServiceBaseStrategy : Strategy
    {
        public override void SendEmailFormat(string Content)
        {
            if (string.IsNullOrEmpty(Content))
                return;
            Console.WriteLine(Content); 
        }
        public override void SendSmsFormat(string Content)
        {
            if (string.IsNullOrEmpty(Content))
                return;
            Console.WriteLine(Content); 
        }
    }
    /// <summary>
    /// 定义领导发送邮件和短信内容格式 :领导只看结果,这里截取内容最后的部分
    /// </summary>
    public class ServiceRoleStrategy : Strategy
    {
        public override void SendEmailFormat(string Content)
        {
            Console.WriteLine(Content.Substring(Content.LastIndexOf(Content, Content.Length - 10)));
        }
        public override void SendSmsFormat(string Content)
        {
            Console.WriteLine(Content.Substring(Content.LastIndexOf(Content, Content.Length - 10)));
        }
    }