重复的代码片段
1.如校验是否鉴权啦/统计接口耗时啦,考虑使用面向切面编程,预编译方式和运行期动态代理(反射注解),编译或运行慢一点。例如: 注解用在方法上,获取方法名,打日志?????? Android AOP/AspectJ
2.如果是流程,大致相同,部分不同,考虑模板模式/多态
3.部分前置条件,如发送命令前判断设备状态/电量等等,使用责任链模式,
4.接口都一样,就是不同状态,实现不同逻辑,考虑状态模式,白天类/黑夜类
代码中大量的分支if/else
1.策略模式——多态
1.1 表现形式为“接口”&“实现类”
1.2 表现形式为“枚举”+“抽象接口”
1.3 Client类保存具体实现的映射关系
- 工厂模式
- 所以使用策略模式时,更好的做法是与工厂模式结合,将不同的策略对象封装到工厂类中,用户只需要传递不同的策略类型,然后从工厂中拿到对应的策略对象即可
- 查表:有固定顺序的话考虑数组
- 查表:key-value类似工厂模式MAP保存创建关系 ,或者保存反射的类名
2.异常场景提前卫语句return;值转换
if(i==0)return "male";
if(i==1)return "female";
而不是使用临时变量,最后return:
if(i==0){
sex="male";
}else if(i==1){
sex="female";}
return sex;
3.多分支+一段代码逻辑:syncFile
- 表现形式为“枚举”+“抽象接口”,Map+函数式接口
Map<String,Function<String,String>>map=new HashMap<>();
map.put(分支条件,()->{代码})
map.put("1",resouceId->helper.redPay(resouceId));
map.put("2",resouceId->helper.greenPay(resouceId));
map.put("3",resouceId->{return "bulepay";});
client:
public String getResult(String key,String rescourceId){
Function<String,String> result=map.get(key);
return result.apply(rescourceId);
}
多个属性,可选设置
- 使用builder构造器模式
网友评论