【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
进入我一个购买方法里面,通过一个字段比如bankCorg 银行编码,调用不同的银行的购买实现类,怎么设计实现最优雅,求教育~
//这样玩可以: class BankBusinessFactory { void registerBankBusiness(Class<? extends BankBusiness> clazz); // 注册业务实现类 BankBusiness getByName(String name) {return map.get...} // 按名称获取业务类的实例 } @Retention(Runtime) @Target(Type) @interface BankBusinessObject {String name} // 一个注解 interface BankBusiness {} // 一个接口 Class ICBCBankBusinessObject implements BankBusiness {} // 爱存不存的 业务实现类 Class ABCBankBusinessObject implements BankBusiness {} // 农行的 业务实现类
拿到银行编码,通过编码和类名的映射获取到类名,再通过反射实例化。这样可以避免大量的if-else
或switch-case。
随便说说,不知道对不对
使用Spring的前提下,是否可以将不同银行的实现类注册成Srping Bean 并且实现通用接口,bean的名字就是你的银行编码,然后根据银行编码获取通用接口,然后调用方法
没用Spring ,那可以模拟Spring,实现一个简单的ioc
不想手工维护编码和类名的关系,那就只能你告诉系统,系统动态帮你维护。。。。
依据您的描述,需要实现一个通过类名称找到对象的问题,这是最为简单的实现就是使用一个map<String name, T obj> 来映射。
拿到银行编码,通过编码和类名的映射获取到类名,再通过反射实例化。这样可以避免大量的if-else
或switch-case。
随便说说,不知道对不对
使用Spring的前提下,是否可以将不同银行的实现类注册成Srping Bean 并且实现通用接口,bean的名字就是你的银行编码,然后根据银行编码获取通用接口,然后调用方法
没用Spring ,那可以模拟Spring,实现一个简单的ioc
不想手工维护编码和类名的关系,那就只能你告诉系统,系统动态帮你维护。。。。
依据您的描述,需要实现一个通过类名称找到对象的问题,这是最为简单的实现就是使用一个map<String name, T obj> 来映射。