1
4
你不应该
您可以在自己的类中封装每个特定操作的逻辑,这样,与OperationPayment相关的所有内容都将保留在OperationPayment类中。您不需要处理器类(因此您不需要每次添加操作时都修改处理器类) 有更复杂的模式来允许对象中介WRT。他们需要执行什么,但我不确定你在这个阶段需要什么复杂的东西。 |
2
5
您混合了重载和多态方法处理。当根据参数类型重载方法时,即 静止的 多态性。这些方法应该从在编译时知道类型的代码中调用。您可以执行以下操作,但这不是一个干净的面向对象代码:
按照布莱恩·阿格纽的建议,让自动运行时多态性工作,并使过程成为每个操作子类型本身的一种方法,这样做会更好。 |
3
1
假设:operation*对象是operation的子类 除非processOperation(operation)方法正在执行一些公共功能,否则您可以移除它并公开流程(operation)方法。 命令模式( JavaWorld Explanation )可能很有用,但很难准确地说出你想从问题中得到什么属性。 |
4
1
代码的问题在于,任何与流程(operation*)方法之一匹配的对象也将与流程(operation)方法匹配。由于有两种方法可以使用,编译器会警告您出现不明确的情况。 如果你 真的? 想要/需要上面的代码,我建议实现流程(operation*)方法,并修改流程(operation)方法,使其称为processcommon(operation)。然后,每个进程(操作*)所做的第一件事就是调用processcommon。 或者,您可以使用instanceofcomparison精确地按照avi所说的进行编码。 两者都不是理想的,但它会实现你想要的。 |
5
1
所以你有一个抽象类叫做' 操作 它有三个类来扩展它。不确定这是不是你想要的,但我想它是这样设计的: 操作程序
操作激活.java
操作支付.java
操作发送电子邮件.java
处理操作服务.java
|
6
1
访客模式在这里有用吗? 类操作可以声明一个接受访问者对象的方法,子类可以提供实现:
同样,为类OperationPayment和OperationSendEmail定义“接受”方法。 现在,您的类可以实现访问者:
|