java – 当if-else增长时,应该使用什么样的设计模式?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 当if-else增长时,应该使用什么样的设计模式?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1348字,纯文字阅读大概需要2分钟。
内容图文
我们有一些代码:
public class ErrorCodeUtil {
public static void handleErrorCode(String errorCode) {
if (errorCode.equals("1")) {
handleErrorCode1();
} else if (errorCode.equals("2")) {
handleErrorCode2();
} else if (errorCode.equals("3")) {
handleErrorCode3();
} else {
handleErrorCodeByDefault(errorCode);
}
}
public static void logByErrorCode(String errorCode) {
if (errorCode.equals("1")) {
logErrorCode1();
} else if (errorCode.equals("2")) {
logErrorCode2();
} else if (errorCode.equals("3")) {
logErrorCode3();
} else {
logErrorCodeByDefault(errorCode);
}
}
//... a lot of method about error code
}
如您所见,我们有一个Util来处理有关ErrorCode的所有内容,当我们想要为错误代码添加特殊逻辑时,我们必须更改该utils类的许多方法.
正如所料,错误代码的值在很大范围内变化(可能是“112345”或“error_code_001”).那么什么样的设计模式适用于那种情况呢?
解决方法:
我会实现一个decision table.
该表将包含一个或多个Predicates作为键和Function作为值之间的一组映射.如果满足谓词条件,则执行相应的函数.如果没有满足谓词条件,则应执行默认函数.这可以(轻松地)取代巨大的“if-else”声明,并且应该更容易维护.
谓词应该如何?它应该采用String(在您的情况下)并且应该返回一个布尔值,指示条件是否满足:
interface Predicate {
public boolean test(String x);
}
在决策表中,您将此接口的(匿名)实现添加为键.
提示:如果您已经使用Java8,那就更好了,有一个内置的Predicate< T>接口.但如果你不是,那么你可以引入自己的Predicate接口.
内容总结
以上是互联网集市为您收集整理的java – 当if-else增长时,应该使用什么样的设计模式?全部内容,希望文章能够帮你解决java – 当if-else增长时,应该使用什么样的设计模式?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。