我有三个班级:
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;更改客户,帐户或交易,因为它们是遗留代码,对变更非常敏感。
答案 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