본문 바로가기
IT/JAVA & Eclipse

[Design Pattern] Balking 패턴

by 네야나라 2017. 9. 22.
반응형

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'라고 한다.

반응형