본문 바로가기

프로그래밍/java

Jenkov.com - Java Abstract Class

http://tutorials.jenkov.com/java/abstract-classes.html


 자바의 추상 클래스는 크게 사용할 일이 없었으나, 아래와 같이 전/후처리는 정해진 프로세스대로 진행되고, 구현되어야 할 액션만 하위 클래스에서 구현하도록 하는 패턴.

public abstract class MyAbstractProcess {

    public void process() {
        stepBefore();
        action();
        stepAfter();
    }

    public void stepBefore() {
        //implementation directly in abstract superclass
    }

    public abstract void action(); // implemented by subclasses

    public void stepAfter() {
        //implementation directly in abstract superclass
    }
}

약간 변형한 예제인데, 파서 개발 시에 아래와 같이 동일한 부분은 프로세스 내에 포함하고, 중요한 파싱 로직만 하위 클래스에 구현하는 Template Method Pattern 되시겠다.

public abstract class URLProcessorBase {

    public void process(URL url) throws IOException {
        URLConnection urlConnection = url.openConnection();
        InputStream input = urlConnection.getInputStream();

        try{
            processURLData(input);
        } finally {
            input.close();
        }
    }

    protected abstract void processURLData(InputStream input)
        throws IOException;

}


'프로그래밍 > java' 카테고리의 다른 글

Jenkov.com - Java Interfaces  (0) 2015.04.21
Jenkov.com - Java Nested Classes  (0) 2015.04.20
Jenkov.com - Java String  (0) 2015.04.14