B.R.O.S

오늘은 BROS 프로젝트를 수행했다.

A Bean that Remembers Old State.

JavaBean 의 특징을 모두 유지하면서 setXXX()가 수행될 때 주어진 제약 조건을 검사하고, commit/rollback 메커니즘을 적용함으로써 읽기 전용 프로퍼티의 setXXX() 메서드를 private로 두지 않게 되었다. 모든 프로퍼티의 변경치는 commit이 수행될 때 까지 임시 변수에 저장되며, commit이 수행되는 순간 실제 프로퍼티에 영향을 미치도록 설계되었다. BROS 인터페이스에서 commit()은 CommitKey를 이용한 인증을 통해 정해진 개체만이 commit을 수행할 수 있도록 하여, commit이 수행되는 경로를 제한함으로써 읽기 전용 프로퍼티를 구현한다.

약 6시간에 걸친 프로젝트였고, Java 1.3 의 Dynamic Proxy 기능을 십분 활용할 수 있어서 좋았다. 실질적으로 BROS 인터페이스 코드 생성기와 Constraint에 대한 간단한 구현작업(자리수 검사, 주민등록번호 검사, 범위 검사 등)만이 남아 있을 뿐이다. 퍼포먼스 면에서 tradeoff가 있지만 자세한 것은 프로파일링을 통해서 알아보아야 할 것 같다.

역시 발등에 불이 떨어지니 결과가 빨리 나오는구나… ㅡㅡ;