检测类类型并重定向到正确的方法

时间:2018-05-16 14:03:57

标签: java spring-boot

我有三个班级:

public AccountTable { void insert(Account account){}}
public CustmerTable { void insert(Customer customer){}}
public TransactionTable { void insert(Transaction Transaction){}}

和一个端点,它接收一个用于插入的消息类:

public message {
    Entity entity; //after deserialization, becomes Account, Customer or Transaction
    String entityName; //contains class of the entity
}

如何重定向到正确的插入方法?我所看到的唯一解决方案是使用istanceOf进行检查并使用switch/if,但我不认为如果添加更多课程,可扩展性更高,我可以&# 39;更改客户,帐户或交易,因为它们是遗留代码,对变更非常敏感。

2 个答案:

答案 0 :(得分:4)

我相信你可以这样做:

public interface Saveable <T> {
    void save(T entity);
}

public class AccountSaver implements Saveable<Account> {
    void save(Account account){
        // ... save account
    }
}

public class CustomerSaver implements Saveable<Customer> {
    void save(Customer customer){
        // ... save customer
    }
}

public class TransactionSaver implements Saveable<Transaction> {
    void save(Transaction transaction){
        // ... save transaction
    }
}

答案 1 :(得分:0)

好吧,如果Class1 / 2/3是你管理的服务,你已经把json管理到了正确的班级,

然后我将创建一个像

这样的服务
addControl

并在ClassX上添加一个方法,其中每个实例都会执行public class MyService { @Autowired List<ClasseX> services; public void save(Object obj){ for (ClasseX service : services) { if(service.accept(obj)){ service.save(obj); break; } } } 检查

instanceOf