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 |