代码多分支的原因:
空值判断
业务判断
状态判断
1.对方法的入参进行非空判断
2.对方法的返回值进行判断
3.并且必须打印对应的日志;
解决上面的问题:
1.接口分层
所谓接口分层指的是:把接口分为外部和内部接口,所有空值判断放在外部接口完成,只处理一次;而内部接口传入的变量由外部接口保证不为空,从而减少空值判断。
方法二:多态
利用多态,每种业务单独处理,在接口不再做任何业务判断。
方法三:使用Map替代分支语句
private Map<Integer, Class<? extends ShareItem>> map = new HashMap<>(); @PostConstruct private void init() { map.put(TYPE_LINK, Link.class); map.put(TYPE_IMAGE, Image.class); map.put(TYPE_TEXT, Text.class); map.put(TYPE_IMAGE_TEXT, ImageText.class); } public ShareItem createShareItem(int type) { Class<? extends ShareItem> shareItemClass = map.get(type); try { return shareItemClass.newInstance(); } catch (Exception e) { e.printStackTrace(); return null; } }
结合了泛型和反射.....写好代码真的很关键