• 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产生依赖。

  • 相关阅读:
    ADO.NET Entity Framework(5)esql (二)。
    google首页动态图片代码
    ms sql 聚合事例
    GridView 一些操作
    《狼与狗的故事》
    Asp.net日期字符串格式化显示方法
    解决网爬工具爬取页面信息出现乱码的问题
    esql的查询结果集 ObjectQuery
    去空空格 null sql
    不安装 oracle的客户,就可以使用pl/sql访问远程oracle 数据库的方法
  • 原文地址:https://www.cnblogs.com/shadoll/p/14214830.html
Copyright © 2020-2023  润新知