设计模式行为型之模板方法

模板方法应该是比较常见的设计模式之一,这里用一个场景(23种设计模式就是用来解决不同场景的方法)来说明什么是模板方法。假设有这样一个场景,通过手机去查询我们自己的账户,银行会发送一个短信返回给用户,而用户角色有普通用户/vip用用户或者叫做定期/活期用户,根据角色不同,短信内容和利息计算方式都不一样。在程序设计中,模板方法可以很好的解决这一问题。代码如下:

    /// <summary>
    /// 定义父类
    /// </summary>
    public abstract class AbstractCustomer
    {
        private string _userName;
        private string _pwd;
        private double _rate;//利率
        public AbstractCustomer(string userName, string pwd,double rate)
        {
            this._userName = userName;
            this._pwd = pwd;
            this._rate = rate;
        }
        /// <summary>
        /// 存款
        /// </summary>
        public double Balance
        {
            get
            {
                return new Random().Next(10000, 1000000);
            }
        }

        /// <summary>
        /// 利息
        /// </summary>
        public double Interest
        {
            get
            {
                return Balance * _rate;
            }
        }

        public abstract void SendNote();
    }
    /// <summary>
    /// vip用户
    /// </summary>
    public class Vip : AbstractCustomer
    {
        public Vip(string userName, string pwd) : base(userName, pwd,0.06)
        {
        }
        public override void SendNote()
        {
            Console.WriteLine($"尊敬的VIP客户,您卡上的余额为{Balance},利息为{Interest}");
        }
    }
    /// <summary>
    /// 普通用户
    /// </summary>
    public class Customer : AbstractCustomer
    {
        public Customer(string userName, string pwd) : base(userName, pwd, 0.03)
        {
        }
        public override void SendNote()
        {
            Console.WriteLine($"尊敬的客户,您卡上的余额为{Balance},利息为{Interest}");
        }
    }

 

 这样在抽象类中,定义不同角色的公有部分,在子类中单独实现不一样的业务,如果还有其它角色,只需要新增一个子类就可以了,符合开闭原则。

 

posted @ 2020-09-04 12:34  一叶青城  阅读(101)  评论(0编辑  收藏  举报