java中针对一个字段调用不同的对象如何设计实现

大雄nobita 发布于 2018/08/22 11:01
阅读 664
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

进入我一个购买方法里面,通过一个字段比如bankCorg  银行编码,调用不同的银行的购买实现类,怎么设计实现最优雅,求教育~

加载中
1
红薯官方
红薯官方
//这样玩可以:

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 {}  // 农行的 业务实现类

 

0
DeMoNHaDeS
DeMoNHaDeS

拿到银行编码,通过编码和类名的映射获取到类名,再通过反射实例化。这样可以避免大量的if-else

或switch-case。

DeMoNHaDeS
DeMoNHaDeS
回复 @尴尬中出 : 再简单点可以直接 固定字符串+编码作为类名。先把逻辑实现了再考虑优化吧。
大雄nobita
大雄nobita
这里就是要维护一个 编码和 类名的规则~有木有 更优雅的~
0
angel
angel

随便说说,不知道对不对

使用Spring的前提下,是否可以将不同银行的实现类注册成Srping Bean 并且实现通用接口,bean的名字就是你的银行编码,然后根据银行编码获取通用接口,然后调用方法

没用Spring ,那可以模拟Spring,实现一个简单的ioc

不想手工维护编码和类名的关系,那就只能你告诉系统,系统动态帮你维护。。。。

大雄nobita
大雄nobita
这个可以有
0
懂得自然懂
懂得自然懂

依据您的描述,需要实现一个通过类名称找到对象的问题,这是最为简单的实现就是使用一个map<String name, T obj> 来映射。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部