java - 这是一种常见的设计模式,可能是委托(delegate)模式吗?

标签 java design-patterns

我很好奇这是什么类型的设计模式。

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

dao.read(a) {
    b = a.moreFields
    b.readField1();  // I want to move these calls ...
    b.readField2();
    b.readField3();

    a.rootField1();
}

假设我将读取方法重构为:

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

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

这是重构为设计模式吗?或者只是重构。我问这个问题是因为我非常倾向于这种类型的重构,并且想给它一个名字。如果我将该方法编码(marshal)至委托(delegate)类,我猜它就是委托(delegate)。

最佳答案

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

interface Marshall {
  void marshall(<...>);
}

...但是是不同的类别。

一旦你这样做了,显而易见的 DP 将使用包含 A 和 B 的复合 Material ,并且执行

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

关于java - 这是一种常见的设计模式,可能是委托(delegate)模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11244822/

相关文章:

c# - 为项目添加资源的设计

android - 如何为 Android View 实现装饰器模式

java - 部分字符串匹配

java.net.SocketException : socket failed: EACCES (Permission denied) not solved by uses-permission

c# - 装饰者模式的替代品

c# - 具有多个 View 和一个演示者的 Winforms MVP

html - 我应该在页面上使用一个表单还是为每个项目生成一个表单?

java - 替换 HTML 文件中的特定字符串

java - 为什么 Java Type Erasure 没有阻止这段代码的编译

java - 通用方法和具有一个更改方法参数的方法体