gpt4 book ai didi

java - 具有不同类型对象的复合模式

转载 作者:行者123 更新时间:2023-11-29 06:20:32 25 4
gpt4 key购买 nike

我想使用 Composite 模式将一个对象收到的调用转发给其他对象。

目前,接收端的对象都是相同的Abstract类型,但问题是它们根据对象的具体类型(考虑不同的模型)选择性地接受不同类型的对象作为参数。

据我所知,有两种解决方案,但都不令人满意:

  • 使用instanceof 检测输入端的类类型对象。这通常被认为是一种不好的做法。
  • 制作与输入类型一样多的列表。这带来了一个问题,即必须添加一个 List 以适应新的输入类型,并且每个 List 都必须依次进行显式处理。

我一直在考虑接口(interface)方面的问题,但到目前为止还没有想出一个可行的想法。这个设计问题的解决方案是什么?复合 Material 是否合适?

P.S:这是在 mvc 的上下文中。

最佳答案

复合模式允许您将对象集合视为叶对象。

我会说你可以这样做:

public interface Command
{
void execute(Object parameter);
}

public class LeafCommand implements Command
{
public void execute(Object parameter)
{
// do something for a leaf
}
}

public class CompositeCommand implements Command
{
private List<Command> commands;

void execute(Object parameter)
{
for (Command child : commands)
{
child.execute(parameter);
}
}

}

这就是 Composite 对我的意义。你是对的 - 如果你必须使用 instanceof 你做错了。

关于java - 具有不同类型对象的复合模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3232706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com