zoukankan      html  css  js  c++  java
  • C# 设计原则-迪米特法则(最少知识原则)

      迪米特法则(Law of Demeter)又叫最少知道原则(Interface Segregation Principle)。

      一个对象应该对其它对象有尽可能少的理解;比如有一个A类,A类肯定对自身的属性和方法是熟悉的;如果A类的方法传参的是B类,那么A类对B类也是熟悉;在A类中直接实例化一个C类,那A类也是对C类熟悉。除此之外,A类就不应对其它类熟悉。

      如果要满足迪米特法则,那么就是尽可能少写public方法和变量,不需要让其它对象知道的变量或方法就不要公开。迪米特法则的主要目的是减少模块间的依赖,降低模块间的耦合度,提高代码的复用性。

      举个例子,我们去饭店点菜,想要知道今天有什么菜色可以点,一般是直接找服务员。

    //服务员
    public class Waiter
    {
        public Menu menu = new Menu();
    }
    
    //菜单
    public class Menu
    {
        public string Content { get; set; }
    }

      顾客获取菜单信息。

    //顾客
    public class People
    {
        public void GetMenu()
        {
            Waiter waiter = new Waiter();
            Menu menu = waiter.menu;
            Console.WriteLine(menu.Content);
        }
    }

      根据迪米特法则,People类是不应该获得Menu类的相关内容,没必要知道太多,这里却产生了依赖关系。我们应该进行修改,在Waiter类中不对外开放Menu类,通过Waiter的方法来提供Menu的信息。

    //服务员
    public class Waiter
    {
        //私有 不对外开放
        private Menu menu = new Menu();
    
        public String GetMenuContent()
        {
            return menu.Content;
        }
    }
    
    //顾客
    public class People
    {
        public void GetMenu()
        {
            Waiter waiter = new Waiter();
            Console.WriteLine(waiter.GetMenuContent());
        }
    }

      这样People就可以通过waiter的getMenuContent的方法来获取Menu信息,这样可以避免People和Menu产生依赖。

  • 相关阅读:
    JAVA常用运算符
    JAVA基本语义简介
    JAVA常用关键字
    记事本写JAVA程序
    JAVA开发环境搭建
    PROTEL DXP原理图编译 常见错误与处理方法
    关于光耦的认识
    十六进制转十进制函数_C编程
    Protues记录文档_1
    SR触发器和JK触发器
  • 原文地址:https://www.cnblogs.com/shadoll/p/14214830.html
Copyright © 2011-2022 走看看