Richter's Principle Of Substitution(里氏替换原则)

(一)里氏替换原则定义

子类替换父类(例如:花木兰替父从军)

(二)里氏替换原则的作用

  1. 里氏替换原则是实现开闭原则的重要方式之一
  2. 克服了继承中重写父类造成的可复用性变差
  3. 动作正确性的保证,即类的扩展不会给已有的系统引入新的错误,降低了代码的概率

(三)里氏替换原则的实现

里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能,说明子类继承父类功能时可以添加新功能,但是不能重写父类的方法。

例如:总经理-部门经理--部门主管--员工

总经理是父类,部门经理是总经理的子类,部门主管是部门经理的子类,员工是部门主管的子类,总经理可以任意修改所有人的信息,而部门经理和部门主管只可以修改比自己职位低员工的信息,而不能修改其它部门员工信息或者总经理的信息,或者说该总经理的信息。

(四)代码案例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Design_Pattern
{
    class Program
    {
        static void Main(string[] args)
        {
            WYN wYN = new Department();
            WYN yN = new Manager();

            wYN.setWork(80);
            yN.setWork(80);

            System.Console.WriteLine("门店占集团文化百分比");
            try
            {
                Console.WriteLine("" + wYN.getStudy(80) + "%");
                Console.WriteLine("" + yN.getStudy(80) + "%");
            }
            catch(Exception er)
            {
                Console.WriteLine("表述错误!");
            }
        }
    }
    /// <summary>
    /// 公司类
    /// </summary>
    public class WYN
    {
        double Work;
        public void setWork(double work)
        {
            Work = work;
        }

        public double getStudy(double study)
        {
            return (study / Work);
        }
    }

    /// <summary>
    /// 门店继承公司类
    /// </summary>
    public class Department:WYN{}

    /// <summary>
    /// 门店部门经理类
    /// </summary>
    public class Manager : WYN
    {
        double Work;
        public void setWork(double work)
        {
            Work = 0;
        }
    }
}

以上代码意思为,一个门店可以占有一个公司的80%文化,但门店的部门经理不能称作咱有一个公司80%的文化。

发布了122 篇原创文章 · 获赞 36 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qqj3066574300/article/details/103840495