gpt4 book ai didi

Java:在以下代码中使用命令模式

转载 作者:行者123 更新时间:2023-12-01 19:04:21 25 4
gpt4 key购买 nike

我有类似于以下的代码:

void processObjectRecursively(Object obj)
{
Field[] fields = obj.getClass().getDeclaredFields();

for(Field field : fields)
{
FieldType type = FieldUtils.getType(field); // FieldType is enum
Object value = field.get(obj);

switch(type)
{
case A:
processObjectRecursively(value);
continue;

case LIST:
processList((List<?>)value);
continue;

case B:
processB(value);
continue;

case C:
processC(value);
continue;
}
}
}

void processList(List<?> list)
{
for(Object obj : list)
{
processObjectRecursively(obj);
}
}

void processB(Object obj)
{
// do something
}

void processC(Object obj)
{
// do something
}
现在。我不喜欢这个长开关盒。因此,我正在考虑创建命令并用它们填充 Map,其中类型是键,值是其相应的命令对象。这样,该方法将类似于:

void processObjectRecursively(Object obj)
{
Field[] fields = obj.getClass().getDeclaredFields();

for(Field field : fields)
{
FieldType type = FieldUtils.getType(field); // FieldType is enum
Object value = field.get(obj);
Command command = commandMap.get(type);
command.execute(value, this); // 'this' needed for calling processObjectRecursively()
}
}

但为此我需要创建一个接口(interface)和另外四个类。那么这种方法可以吗?还是过度设计了?您能建议任何其他更简单的方法来达到相同的效果吗?

最佳答案

命令模式在这里听起来不错。但我宁愿寻找使用各种值类型解决此问题的可能性,而不是使用 Object。所以,我可以简单地写下一行,如下所示,

value.process()

关于Java:在以下代码中使用命令模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10749946/

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