IT/JAVA & Eclipse
[Design Pattern] Balking 패턴
travelneya
2017. 9. 22. 18:00
반응형
Balking 패턴
객체가 특정한 상태에 놓여 실행을 할 수 없는 상태이거나 지금 처리하면 안되는 상태일 때 객체가 'balk'(멈춤 상태)를 리턴하는 패턴이다.
예를 들어, 자바에서 ZIP파일이 열려있지 않은 상태에서 내용을 가져오려고 get()을 호출하면 객체는 'balk'를 요청한다.
public class Example {
private boolean jobInProgress = false;
public void job() {
synchronized(this) {
if (jobInProgress) {
return;
}
jobInProgress = true;
}
// Code to execute job goes here
// ...
}
void jobCompleted() {
synchronized(this) {
jobInProgress = false;
}
}
}
여기서 핵심은 job메소드에 있는 if문과 현재 상태를 알아보는 jobInProgress 이다.
만약 현재 진행 상태라면 job 메소드는 코드를 실행 시키지 않고 바로 리턴하게 된다.
이렇게 리턴하는 것을 'balk'라고 한다.