当前位置: 首页 > news >正文

设计模式.迪米特法则

迪米特法则的简写是LOD,Law of Demeter,又叫最少知识原则(Least Knowledge Principle, LKP)

用一句话来解释就是“一个对象应当对其他对象有尽可能少的了解。”

这个法则可以通过一个例子来描述,现在需要向计算机用户输出1+1的结果,那么我们可以分解这个操作到两个类中,一个类用来输出,一个类用来计算。

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

namespace DemeterLaw
{
    class Program
    
{
        static void Main(string[] args)
        {
            ShowResult.Show(Compute.Add(1,1).ToString());
            Console.Read();
        }
    }
    class ShowResult
    
{
        public static void Show(string str)
        {
            Console.WriteLine(str);
        }
    }
    class Compute
    
{
        public static int Add(int a, int b)
        {
            return a + b;
        }
    }
}

两个对象只需要知道对方能够做什么即可,不用关心怎么实现。看起来这个法则比较简单,实际应用中有很多可以分解的地方。

 



     本文转自wengyuli 51CTO博客,原文链接:http://blog.51cto.com/wengyuli/586769,如需转载请自行联系原作者



相关文章:

  • 【图像处理】基于OpenCV底层实现的直方图匹配
  • javascript判断IPV6格式
  • 【sql】部门最高工资 Department Highest Salary
  • 用shell批量修改类似的文件名
  • 【★】交换层网关协议大总结!
  • 使用vRealize Operations for Horizon,做高效的虚拟桌面系统管理员
  • Tomcat6+JDK6如何加固,解决Logjam attack,
  • Word2007“由于文件许可权错误,Word无法完成保存操作”问题的解决方法
  • Centos压缩解压
  • Linux执行命令常见的英语语句
  • asn1编码格式的解析过程
  • top2
  • 远程连接服务器工具:sshpass
  • U盘安装Debian 6 amd64版本
  • Zabbix调优的几个原则
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【知识碎片】第三方登录弹窗效果
  • CODING 缺陷管理功能正式开始公测
  • docker-consul
  • fetch 从初识到应用
  • IDEA 插件开发入门教程
  • Iterator 和 for...of 循环
  • Java 23种设计模式 之单例模式 7种实现方式
  • java多线程
  • js作用域和this的理解
  • node 版本过低
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • TCP拥塞控制
  • vuex 笔记整理
  • 分布式任务队列Celery
  • 基于游标的分页接口实现
  • 简单基于spring的redis配置(单机和集群模式)
  • 简单实现一个textarea自适应高度
  • 深入 Nginx 之配置篇
  • 使用common-codec进行md5加密
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • UI设计初学者应该如何入门?
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • 移动端高清、多屏适配方案
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​flutter 代码混淆
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • $(function(){})与(function($){....})(jQuery)的区别
  • (LeetCode) T14. Longest Common Prefix
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (实战篇)如何缓存数据
  • (一)kafka实战——kafka源码编译启动
  • (转) ns2/nam与nam实现相关的文件
  • (转)linux下的时间函数使用
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution