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

C# Unity 面向对象补全计划 七大原则 之 迪米特法则(Law Of Demeter )难度:☆☆☆ 总结:直取蜀汉

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正
本系列作为七大原则和设计模式的进阶知识,看不懂没关系

请看专栏:http://t.csdnimg.cn/mIitr,查漏补缺

1.迪米特法则(Law   Of Demeter )

        迪米特法则强调了对象之间的松耦合。具体来说,它指出一个对象不应该知道太多关于其他对象的细节,只与直接的朋友通信

        朋友是指:与该对象直接交互的其他对象或与该对象有关联关系的其他对象

2.举栗子

反例

我有三个类,服务员,菜单和顾客,我想让顾客点餐,需要什么?

一个服务员

一份菜单

服务员点单的行为

但是我不想让顾客知道我菜单的一些细节,比如我菜单内要是写了成本价,显然不能让其知道

但是在这个设计中,People 类直接依赖于 Menu 类,违反了迪米特法则

应该避免让 People 类知道太多关于 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());}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MongoDB的复合通配符索引详解
  • ulimit
  • ShardingSphere之ShardingProxy集群部署
  • C# 在Word中插入或删除分节符
  • 创建一个简单的贪吃蛇游戏:HTML、CSS和JavaScript教程
  • VS2022使用.Net Framework4.0方法
  • 【实战营彩蛋InternLM 1.8B 模型 Android 端侧部署实践
  • GitHub开源项目精选:用React、TypeScript和Framer Motion复刻MacOS桌面
  • 内核函数调试
  • 机械学习—零基础学习日志(数学基础汇总1)
  • 如何识别并防御漏洞扫描类攻击
  • 大数据环境下用户数据隐私安全防护系统的设计与实现(论文+源码)_kaic
  • FPGA常见型号
  • 技术周总结 08.05-08.11周日
  • 如何为服务器生成一个TLS证书
  • eclipse的离线汉化
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • es6(二):字符串的扩展
  • Java 网络编程(2):UDP 的使用
  • JavaScript实现分页效果
  • java概述
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Median of Two Sorted Arrays
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • yii2中session跨域名的问题
  • 对超线程几个不同角度的解释
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • Spring Batch JSON 支持
  • ‌JavaScript 数据类型转换
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • ## 基础知识
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (多级缓存)多级缓存
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (数据结构)顺序表的定义
  • (一一四)第九章编程练习
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • ***原理与防范
  • ./configure,make,make install的作用
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET/C# 的字符串暂存池
  • .NET开源、简单、实用的数据库文档生成工具
  • .NET面试题(二)
  • /run/containerd/containerd.sock connect: connection refused
  • @Autowired多个相同类型bean装配问题
  • @Slf4j idea标红Cannot resolve symbol ‘log‘
  • [100天算法】-不同路径 III(day 73)
  • [20171101]rman to destination.txt
  • [AI Google] Ask Photos: 使用Gemini搜索照片的新方法
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [bzoj4240] 有趣的家庭菜园
  • [C/C++]数据结构 循环队列