Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这是一种常见的设计模式,可能是委托模式吗?_Java_Design Patterns - Fatal编程技术网

Java 这是一种常见的设计模式,可能是委托模式吗?

Java 这是一种常见的设计模式,可能是委托模式吗?,java,design-patterns,Java,Design Patterns,我很好奇这是什么样的设计模式 我有一个方法,比如dao.read() 假设我将read方法重构为: dao.read(a) { marshal(a.b) a.rootField1() marshal(b) { b.readField1(); // I want to move these calls ... b.readField2(); b.readField3(); } } 这是重构成设计模式吗?或者只是重

我很好奇这是什么样的设计模式

我有一个方法,比如dao.read()

假设我将read方法重构为:

dao.read(a) {
    marshal(a.b)
    a.rootField1()

    marshal(b) {
      b.readField1();  // I want to move these calls ...
      b.readField2();
      b.readField3();      
    }
}

这是重构成设计模式吗?或者只是重构。我之所以这么问,是因为我非常喜欢这种类型的重构,并想给它起个名字。如果我将该方法封送移动到委托类,我猜它是委托。

它不是设计模式。充其量是“多态性”,这是OOP的一个基本特性。您可以将处理添加为对象a的类a和对象B的类B的方法。他们会分享这个界面

interface Marshall {
  void marshall(<...>);
}
接口{
无效马歇尔();
}
…但不同的阶层

一旦你这样做了,明显的DP将是使用一个同时包含a和B的复合物,并且

composite.marshall(<....>);
composite.marshall();

您拥有的不是设计模式,而是辅助方法

名称是“Extract method”,它不是一个设计模式,但可能被称为“重构模式”,因为该模式在最终结果中不存在。提取一个方法的行为遵循这个模式,它看起来也像“facade”,即经典的facade。在本例中,封送处理方法是指向更大代码体的简化接口。不,门面是完全不相关的。它适用于一种情况,即您有一个与您的目的不匹配的外来API,因此您构建了一个代码的外观层,该层可以调整该API的接口以更好地满足您的目的。
composite.marshall(<....>);