• 迪米特法则


    定义:迪米特法则又叫最少知识原则,指一个对象应对其他对象有尽可能少的了解,也就是说,一个模块或对象应尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立,这样当一个模块修改时,影响的模块就会越少,扩展起来更加容易。

    自己理解:就是说类之间联系减少、降低耦合。

    实例:

    有个总公司,下面有一个分公司,现在要查询总公司分公司的员工id

     /// <summary>
        /// 总公司员工
        /// </summary>
        class Employee
        {
            public string id;
            public String ID
            {
                get { return id; }
                set { id = value; }
            }
        }
        /// <summary>
        /// 分公司员工
        /// </summary>
        class SubEmployee
        {
            private string id;
            public string ID
            {
                get { return id; }
                set { id = value; }
            }
        }
    
        /// <summary>
        /// 总公司管理员工
        /// </summary>
        class Commanymanager
        {
            public List<Employee> GetEmployee()
            {
                List<Employee> list = new List<Employee>();
                for (int i = 1; i < 10; i++)
                {
                    Employee emp = new Employee();
                    emp.ID = "总公司" + i;
                    list.Add(emp);
                }
                return list;
            }
    
            public void pintAllEmppyee(Subcommanymanag sub)
            {
                sub.Shuchu();
                List<Employee> list = this.GetEmployee();
                foreach (var item in list)
                {
                    Console.WriteLine(item.ID);
                }
            }
        }
    
        /// <summary>
        /// 分公司管理员工
        /// </summary>
        class Subcommanymanag
        {
            public List<SubEmployee> GetSubCommany()
            {
                List<SubEmployee> list = new List<SubEmployee>();
                for (int i = 1; i < 20; i++)
                {
                    SubEmployee sub = new SubEmployee();
                    sub.ID = "分公司" + i;
                    list.Add(sub);
                }
                return list;
            }
            public void Shuchu()
            {
                List<SubEmployee> list = GetSubCommany();
                foreach (var item in list)
                {
                    Console.WriteLine(item.ID);
                }
            }
    
        }
    

    客户端:

    Commanymanager comanger = new Commanymanager();
                comanger.pintAllEmppyee(new Subcommanymanag());
                Console.Read();
    

    这样打印的话,就可以打印出总公司和分公司员工的ID

    依赖倒置原则:抽象不应该依赖细节,也就是“面向接口编程”,而不是面向实现编程。

    接口隔离原则:多个专门的接口要比一个单一的总接口要好,也就是说不要让一个单一的接口承担过多的职责。

    总结:迪米特法则、依赖倒置、接口隔离这些原则应该都是比较好理解的,用的时候就要多考虑这些。

    最近突发奇想:想写一个贪吃蛇的游戏:

    定义类:

    1.墙类

    1.1显示墙得方法、属性

    2.食物类

    2.1显示食物的方法

    2.2实现食物随机出现的方法

    3.蛇

    3.1显示蛇的方法/可以改变位置

    3.2蛇运动的方法

    3.2.1蛇是否吃到食物

    3.2.2蛇是否撞墙

    3.2.3蛇是否吃到自己

    3.2.4蛇通关

    键盘操作蛇运动

     

  • 相关阅读:
    Linux下端口被占用确认
    Debuggex – 超好用的正则表达式可视化调试工具
    URL最大长度
    无需重启 修改计算机名直接生效
    UDP穿越NAT原理(p2p)
    gdb中信号
    锁 (读写锁优先级 写饥饿) (锁竞争引发的高系统调用)
    Loopback接口用途---用作管理地址。
    C/C++调试:gdbserver的简单使用
    总结一下NDK crash排查步骤
  • 原文地址:https://www.cnblogs.com/liu23/p/9043892.html
Copyright © 2020-2023  润新知