重命名方法,或使用多态性:使用接口,然后将clawback代码放入对象本身,或使用两次分派(取决于您的设计范例和口味)。
使用对象中的代码将是:
public interface Clawbackable{ void clawBack()}public class CommissionFacade{ public <T extends Clawbackable> void clawBack(Collection<T> objects) { for(T object: objects) { object.clawBack(); } }}public class CommissionTrns implements Clawbackable { public void clawback(){ // do clawback for commissions }}public class FinanceRequest implements Clawbackable { public void clawBack(){ // do clwaback for FinanceRequest }}我更喜欢这种方法,因为我相信您的域应该包含您的逻辑;但我并不完全了解您的确切意愿,因此请您自行决定。
使用双重调度,您可以将“ ClawbackHandler”传递给clawback方法,并在处理程序上根据类型调用适当的方法。



