반응형
도메인 모델링
비즈니스 사용자의 편의성을 어떻게 개선할수 있을까?
'어떤 조건이 주어졌을때(when), 이런작업을 한다(then)' 같은 간단한 조합을 규칙으로 지정할수 있게 한다.
이 도메인에는 세가지 개념이 있다.
- 조건: 어떤 팩트에 적용할 조건(참이나 거짓으로 평가됨)
- 액션: 실행할 연산이나 코드 집합
- 규칙: 조건과 액션을 합친것, 조건이 참일때만 액션을 실행한다.
조건
@FunctionalInterface
public interface Condition {
boolean evaluate(Facts facts);
}
규칙
@FunctionalInterface
public inference Rule {
void perform(Facts facts);
}
규칙의 개념 모델링
public class DefaultRule implements Rule {
private final Condition condition;
private final Action action;
public Rule(final Condition condition, final Action action) {
this.condition = condition;
this.action = action;
}
@Override
void perform(Facts facts) {
if(condition.evaluate(facts)) {
action.execute(facts);
}
}
}
규칙 만들기
final Condition condition = (Facts facts) -> "CEO".equals(facts.getFact("jobTitle"));
final Action action = (Facts facts) -> {
var name = facts.getFact("name");
Mailer.sendMail("sales@company.com", "Relevant customer" + name);
};
final Rule rule = new DefaultRule(condition, action);
실전자바 소프트웨어 개발
저자 - 라울-게이브리얼 우르마, 리처드 워버턴, 역자 - 우정은
반응형
'JAVA' 카테고리의 다른 글
이펙티브 자바 # 3 (0) | 2021.07.30 |
---|---|
이펙티브 자바 #1 (0) | 2021.07.27 |