Swing Page는 내가 만들 프레임워크이다.
- 목표
JDK 하나만으로 자바와 프레임워크에 대한 이해도를 높인다.
"개발자가 시스템에 로직을 전달한다"
개발자는 페이지와 이벤트, 공유 데이터 이 세가지만 고려한다.
페이지 전환의 역할은 프레임워크에 맡긴다.
나의 프레임워크 근간은 다형성이다.
인터페이스와 추상 클래스를 충분히 활용하여 골격을 짜두어
개발자는 규칙에 맞게 페이지와 이벤트를 개발한다.
본 프레임워크 추상화 계층엔
이벤트 발행과 수신의 역할이 숨겨져 있다.
비록,
페이지 간 데이터를 전송하는 부분에서 미흡한 부분이 존재하고,
리플렉션을 사용하지 않으며,
객체의 생명 주기를 관리하지는 않는다.
그럼에도,
개발자가 고려해야 할 점을 줄여서 생산성을 높이도록
개발자의 로직을 가져와 전체 시스템에서 활용하기 때문에
프레임워크를 이해하는데 충분히 도움이 될 것이라고 판단하였다.
교육 계획
v1: 기존 JavaFX 프레임워크를 Swing으로 전환
자바 초심자를 대상으로 하였다.
최근 JDK엔 JavaFX가 포함되지 않는 경우가 많다.
인터페이스와 추상 클래스로 뼈대가 잡힌 다형성,
이벤트 발행-구독 패턴으로 페이지 간 느슨한 결합,
레이어드 아키텍처로 책임을 분리,
빌더 패턴으로 프레임워크에 개발자가 작성한 로직 등록하기 등을
보여주는데 JDK만 있도록 했다.
-> 추상화에 대한 이해도 향상
v2: 모듈 분리
멀티 모듈의 관점으로 프로그램을 바라보게 한다.
"패키지 디폴트 대신 자바 모듈 시스템 활용?"
"배포의 과정에서 모듈 분리의 장점?"
"모듈 간 또는 클래스 간 의존성 관계?" 등의
질문을 던질 수 있도록 계획하였다.
-> 의존성 및 모듈화, 배포에 대한 이해도 향상
V3: 뒤로가기, 앞으로가기
스택을 활용하여 브라우저의 뒤로가기, 앞으로가기를 이해
-> 자료구조 활용
v4: 다크 모드 추가 및 직접 커스텀 메뉴 추가
다크 모드는 프레임워크 유틸로써 기능을 추가할 수 있다.
개발자의 커스텀 메뉴를 추가한다.
-> 확장성에 대한 이해도 향상
이렇게 각 단계를 계획하고 개발하였다.
단순히 프레임워크를 가져와 쓰는 것이 아니라,
프레임워크의 기초를 직접 코드로 바라보며 이해하고,
직접 만들 수 있도록 경험할 수 있길 바랐다.
나는 4학년 1학기 이후에야,
위의 내용들을 체감할 수 있었다.
모쪼록 다른 사람에게 도움이 될 수 있길 간절히 바란다.
프로그램에 대한 시야를 넓힐 수 있는 기회가 될 수 있으면 되도록..
난.. 세상과 사람에 대한 시야를 넓히고 싶다.
아 맞다.. 부족하지만 함께 개발할 수 있다면 더 좋을 것 같다:D
기존 프로그램이 1년도 넘어 기억이 가물 가물하고,
최근에 개발한 위의 각 버전이 돌아가는 것을 단순하게 테스트하였고,
스윙에 대한 이해도가 부족하여 잘못된 프로그램일 수도 있지만..
나 이번엔 자신감있게 마무리 짓는다.