omk*_*rra 13 java design-patterns if-statement switch-statement spring-aop
我们几乎没有规则,它们在Java中作为方法实现.但有时我们需要绕过规则.因此,对于每个规则,我们都有一个布尔指示符来指示是否执行.将方法映射到Database中的布尔值并基于布尔值执行方法可能是一个很好的设计.
下面是示例模板
1 Rule1 true
2 Rule2 false
3 Rule3 true
4 Rule4 true
Run Code Online (Sandbox Code Playgroud)
所以,现在我需要分别执行method1(),method3()和method4().
一种简单的方法是使用If(rulee == true)
executeMethod();
其次是使用Switch来执行案例(方法调用)
注意:我们可能需要在不同的位置(方法)执行方法.所以请不要考虑从单一方法调用所有方法.
我有机会可以使用AOP吗?
Kar*_*cki 12
您可以将基本界面定义为
public interface Rule {
boolean canExecute();
void execute();
}
Run Code Online (Sandbox Code Playgroud)
并将方法转换为Rule
接口实现.数据库中的布尔值将映射到canExecute()
返回值.
如果方法变得复杂,这将是一个好主意,它们不止一些,而且父类开始看起来像神对象.
小智 6
使用Java 8 Stream api和Enums.
public class Main {
public enum Rule {
RULE1 {
@Override
public void doWork() {
}
},
RULE2 {
@Override
public void doWork() {
}
};
public abstract void doWork();
}
public static void main(String[] args) {
List<String> rules = new ArrayList<>();
rules.stream()
.map(Rule::valueOf)
.forEach(Rule::doWork);
}
}
Run Code Online (Sandbox Code Playgroud)