当前位置: 首页 > 知识库问答 >
问题:

Java中的Demeter混淆定律

樊胜
2023-03-14
 public static void fill(Order order) {
    DatabaseComponent databaseComponent = new DatabaseComponent();
    Person person = databaseComponent.getById(order.getUserId());
    order.setName(person.getName());
    order.setPhone(person.getPhone());
}
 public void fill(Order order) {
    DatabaseComponent databaseComponent = new DatabaseComponent();
    Person person = databaseComponent.getById(order.getId());
    fillOrder(order,person);

}
private void fillOrder(Order order,Person person){
    order.setPhone(person.getPhone());
    order.setName(person.getName());
    return;
}

但我认为在公开的方法中,它仍然是破坏lod的。有些人使用这种方法。

public class Util {
public static void fillOrder(Order order,Person person){
    order.setPhone(person.getPhone());
    order.setName(person.getName());
    return;
}}

是啊,也许它不坏洛德。但是为什么呢?可能是Client没有耦合到Person,但是它耦合到Util。在这种场合下LoD的优势是什么。

共有1个答案

伯茂才
2023-03-14

洛德说:

更正式地说,函数的得墨忒尔定律要求对象O的方法m只能调用以下几种对象的方法:[2]

O本身

 类似资料:
  • 问题内容: 我正在寻找一个好的Java混淆器。 我已经对以下Java混淆器进行了初步研究:proguard,yguard,retroguard,dasho,alatorari,jshrink,smokescreen,jobfuscate,marvin,jbco,jode,javaguard,jarg,joga,cafebabe,donquixote,mwobfu,bbmug,zelix klass

  • 我一直在摆弄Proguard配置,我想测试只是为了优化 但我仍然会遇到这样的错误: java.lang.IllegalArgumentExc0019:找不到[org/apache/log/log4j/core/jackson/Log4jXmlMoules](有1个已知的超级类)和[org/apache/log/log4j/core/jackson/Log4jJsonMoules](有4个已知的超级

  • Powershell的混淆目前已经使用的越来越多,国内外也有了较多的研究,在今年的BH大会上也有对应的议题,关注点是反混淆,那么里面的一些姿势很值得我们学习,我们提供一些混淆实例,来让大家对于PS的混淆做到一个初步了解,也为防御混淆提供一些思路。 实例 在混淆之前,先看看powershell编码执行的方式。 -EC,-EncodedCommand,-EncodedComman,-EncodedCo

  • 我正在阅读关于线程的oracle java教程,我看到了这个示例 当有人可能使用这些方法签入他们的代码时?thread.interrupt(标志)是静态的,所以通过上面的检查,我们实际上检查是否有任何踏面被中断了?即使是这样,根据教程,当线程通过调用静态方法thread.interrupted检查中断时,中断状态将被清除。或任何通过抛出InterruptedException退出的方法在这样做时将

  • 我已经运行这个程序好几次了,每次最后打印的p和g的值都是一样的。我不太确定为什么会这样——malloc不能在理论上选择内存中的任何位置让p和g指向吗?为什么p 8总是等于g?如果能澄清,将不胜感激。 谢谢

  • 假设我有小数21-10=10。 我似乎不明白这里发生了什么,为什么我会得到这些情况的正确答案。 任何澄清都有帮助!