热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

得墨忒耳定律(LawofDemeter)

前阵子在微博上看到有人在说软件架构的东东,以前也没接触过,就放狗搜了一通,想简单了解学习以下。这种新东西,一般都是先找PPT看以下浓缩的大概,然后就找到了这这篇PPT:4

前阵子在微博上看到有人在说软件架构的东东,以前也没接触过,就放狗搜了一通,想简单了解学习以下。

这种新东西, 一般都是先找 PPT 看以下浓缩的大概,然后就找到了这这篇 PPT:

4+1 View Model of Software Architecture



在这篇 PPT 里看到了 Garlan and Shaw`s Architecture styles 这句话,然后又放狗搜。

找到了这两篇文档:


1. Garlan and Shaw describe several architectural styles for software.pdf

2. An Introduction to Software Architecture.pdf


在第一篇文档里看到了 Law of Demeter,然后继续放狗搜,学习了一下。

解耦合手段之四:Law of Demeter 这篇文章是搜到的, 写的不错, 解决了一些疑问, 在此感谢作者。


其实就是“最少知识原则(Principle of Least Knowledge)”,是一种软件开发的设计指导原则,在面向对象软件设计种用的较多,效果很好。得墨忒耳定律是松耦合的一种具体案例。使得软件更好的可维护性与适应性。因为对象较少依赖其它对象的内部结构,可以改变对象容器(container)而不用改变它的调用者(caller)。

这个就好像一个企业里最有效率的团队成员之间各自努力干着自己的事情:

不相关的不扯淡,弱相关的少扯蛋,尽量减少强相关。避免不必要的干扰和恢复中断之前状态所需要的成本。

这里包括心情成本,时间成本。。。

软件的各个模块之间也是同样的道理,尤其是越大的系统越要注意。

不仅仅是软件, 硬件也遵循着同样的道理。 一点点感悟, 尼玛, 又要开会了。 本来还要写点的。 卧槽。。。

====================会=======后========吐=======槽=============================

我靠。 开会决定了。临时让我加入联/网/平/台项目。 这下好了。

ED137五个产品,ED137标准文档, F4核心板,C919模块,这又加了个联网平台,无语。

乱七八糟的管理!

项目之间耦合严重啊。。。懂不懂?人的精力是有限的,识得唔识得啊?不要拉出来来回溜行不行?

图样图森破,萨么塔么拿衣服!

搞了快一年了,当初拍脑袋火急火燎的上马,功能需求都没有定义清楚,设计仓促决定。

后面一边改一边重新确立功能,现在烂摊子,让我们擦屁股。。。

统共就四块板子,结果硬件回来几个月了。还没有确定硬件是否可以用。。。

摔。。。玩我呢?还是逗我呢?抓狂

我虽然是新手,但是我也知道,一个新产品,既然客户的需求定义的少,也不知道要什么,我们是不是应该先捡常用的功能先期做出一个能用的简化版的产品?别贪多,想一次性把后面要升级换代时候的功能也加进来,一劳永逸,这不扯自己蛋吗?

涉及到硬件的研发,能像软件开发一样迭代进行吗?开板不要钱啊?看着那些浪费的板子,心疼啊。

日。懒得说了。瞎管理,怪不得产品各种问题频出。。。还不思悔改。简直了。

让我负责就少特么瞎掺和瞎指挥。失败了我负责。你掺和了算什么事?有没有职业节操?



推荐阅读
  • 本文详细介绍了如何在 Android 中使用值动画(ValueAnimator)来动态调整 ImageView 的高度,并探讨了相关的关键属性和方法,包括图片填充后的高度、原始图片高度、动画变化因子以及布局重置等。 ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • Logback使用小结
    1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ... [详细]
  • 724. 寻找数组的中轴索引
    给定一个整数数组 `nums`,编写一个方法返回该数组的“中轴”索引。定义中轴索引为该索引左侧所有数字之和等于右侧所有数字之和的索引。如果不存在这样的索引,则返回 -1。如果有多个中轴索引,返回最左边的一个。 ... [详细]
  • [Vue.js 3.0] Guide – Scaling Up – State Management
    [Vue.js 3.0] Guide – Scaling Up – State Management ... [详细]
  • 本文针对初学者在创建Android项目时遇到的R.java文件错误提供了解决方案,通过实际案例和详细的日志分析,帮助读者快速定位并解决问题。 ... [详细]
  • Barbican 是 OpenStack 社区的核心项目之一,旨在为各种环境下的云服务提供全面的密钥管理解决方案。 ... [详细]
  • 本文介绍了如何通过ARM编译器组件重定向标准C运行时库的I/O函数,以适应不同的硬件平台。原文链接:https://www.keil.com/pack/doc/compiler/RetargetIO/html/retarget_overview.html ... [详细]
  • 解决vCenter vSphere HA初始化失败的问题
    本文探讨了在集群中遇到的所有vSphere HA主机状态显示‘无法正确安装或配置vSphere HA代理’错误的情况,并详细介绍了排查与解决步骤,包括检查HA初始化错误及安装HA代理的常见故障排除方法。 ... [详细]
  • Chapter11&12:DefocusBlur&FinalScene在Camera.h中修改如下:#pragmaonce#define_USE ... [详细]
  • Spring Cloud Config 使用 Vault 作为配置存储
    本文探讨了如何在Spring Cloud Config中集成HashiCorp Vault作为配置存储解决方案,基于Spring Cloud Hoxton.RELEASE及Spring Boot 2.2.1.RELEASE版本。文章还提供了详细的配置示例和实践建议。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
author-avatar
安份丶小娚人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有