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

  • 相关阅读:
    在提交订单时,为了让用户体验更好,一般改成正在提交,后面加三个点,为了让页面更生动,可以把点点改成动态
    js日期格式化
    h5嵌入视频遇到的bug及总结---转载
    字符串中删除多个特定的字符串
    在苹果手机上input有内阴影怎么去除
    把彩色图片置灰色图片
    springmvc入门程序
    Linux常用命令大全
    MyBatis逆向工程详细教程
    MyBatis整合Spring详细教程
  • 原文地址:https://www.cnblogs.com/shadoll/p/14214830.html
Copyright © 2011-2022 走看看