728x90
디자인 패턴 알아야 하는 이유
아무리 자바 프로그래밍에 대한 지식을 쌓는다 하더라도 디자인 패턴이나 UML로 작성된 산출물을 이해할수 없다면 전체적인 큰 그림을 보지 못한다
디자인패턴에 대해서 공부하는것은 성능측면뿐 아니라 지식을 한단계 발전시키는데 반드시 필요하다 적어도 MVC모델은 적용해야된다
jsp에서 화면하나로 모든걸 처리하도록 만들면되는데 왜이렇게 복잡하게 해야하나? 라는 생각이 든다
J2EE 패턴을 공부하려면, MVC 모델에 대해 먼저 이해해야 한다 왜냐하면 J2EE 패턴에는 MVC 구조가 기본으로 깔려있고, 요즘 많이 사용하는 Spring프레임워크의 Spring MVC도 매우 인기 있기 때문이다
MVC 패턴
MVC는 Model, View, Controller 의 약자이다 하나의 JSP나 스윙(Swing)처럼 화면에 모든 처리로직을 모아두는것이 아니라 모델역할, 뷰역할, 컨트롤러 역할을 하는 클래스를 각각 만들어서 개발하는 모델이다
J2EE 디자인 패턴이란?
pattern : 무엇인가를 만들기위한 모델이나 가이드, 설명의 집합을 의미함
J2EE패턴 사진은 사용자의 요청이 처리되는 순서로 생각하면서 위에서부터 아래로 보면된다
가장 윗부분은 프레젠테이션 티어, 중간부분은 비즈니스 티어, 하단부분은 인테그레이션티어 이다, 위로갈수록 화면에 가깝고 아래로 갈수록 DB와 같은 저장소에 가깝다
- Intercepting Filter 패턴: 요청 타입에 따라 다른처리를 하기 위한 패턴
- Front Controller 패턴: 요청 전후에 처리하기 위한 컨트롤러를 지정하는 패턴
- View Helper 패턴: 프레젠테이션 로직과 상관없는 비즈니스 로직을 헬퍼로 지정하는 패턴
- Composite View 패턴: 최소단위의 하위 컴포넌트를 분리하여 화면을 구성하는 패턴
- Service to Worker 패턴: Front Controller와 View Helper 사이에 디스패처를 - 두어 조합하는 패턴
- Dispatcher View 패턴: Front Controller와 View Helper로 디스패처 컴포넌트를 형성한다. 뷰 처리가 종료될때까지 다른 활동을 지연한다는 점이 Service to Worker 패턴과 다르다
- Business Delegate패턴: 비즈니스 서비스 접근을 캡슐화 하는 패턴
- Service Locator 패턴: 서비스와 컴포넌트 검색을 쉽게하는 패턴
- Session Facade 패턴: 비즈니스 티어 컴포넌트를 캡슐화하고, 원격 클라이언트에서 접근할수 있는 서비스를 제공하는 패턴
- Composite Entity 패턴: 로컬 엔티티 빈과 POJO를 이용하여 큰 단위의 엔티티 객체를 구현한다
- Transfer Object 패턴: 일명 Value Object 패턴이라고 많이 알려져 있다 데이터를 전송하기 위한 객체에 대한 패턴
- Transfer Object Assembler 패턴: 하나의 Transfer Object로 모든 타입 데이터를 처리할수 없으므로, 여러 Transfer Object를 조합하거나 변형한 객체를 생성하여 사용하는 패턴
- Value List Handler 패턴: 데이터 조회를 처리하고, 결과를 임시 저장하며, 결과 집합을 검색하여 필요한 항목을 선택하는 역할을 수행한다
- Data Access Object 패턴: 일명 DAO라고 많이 알려져 있다. DB에 접근을 전담하는 클래스를 추상화하고 캡슐화한다
- Service Activator 패턴: 비동기적 호출을 처리하기 위한 패턴이다
그럼 도대체 여기 명시된 패턴중에 성능과 관련된 패턴은 무엇일까?
J2EE 패턴중 성능과 가장 밀접한 패턴은 Service Locator 패턴이다
그리고 성능에 직접적으로 많은 영향을 미치지 않지만, 애플리케이션 개발시 반드시 사용해야하는 Transfer Object 패턴도 있다
Service to Worker 패턴 vs Dispatcher View 패턴
패턴이 너무 많다 어떤 패턴위주로 공부해야될가?
- Business Delegate
- Session Facade
- Data Access Object
- Service Locator
- Transfer Object
성능과 관련된 Transfer Object, Service Locator 패턴이 있다
Transfer Object 패턴을 사용하면 하나의 객체에 결과 값을 담아올수 있어 두번, 세번 요청하는일이 발생하는것을 줄여준다
Service Locator 패턴은 예전에 많이 사용되었던 EJB의 EJB Home 객체나 DB의 DataSource를 찾을때 소요되는 응답속도를 감소시키기 위해서 사용된다
정리
자바기반의 시스템을 분석, 설계하고 개발하면서 패턴을 모른다면 반쪽 분석설계자나 개발자라고 할수 있다. 프레임워크를 사용할때도 마찬가지이다 그 프레임워크를 만든 사람의 사상과 프레임워크 구조, 기능을 정확히 알고 있어야 제대로 프레임워크를 사용할수 있다
성능 개선은 물론 개발과 유지보수의 편의를 위해서 앞서 명시된 여러가지 J2EE 패턴 중에 적어도
Business Delegate, Session Facade, Data Access Object, Service Locator, TransferObject 패턴은 적용해야 한다고 생각한다
참고자료
Core J2EE Pattern Catalog
자바 성능 튜닝이야기 - 이상민
728x90
'Back-End > Java' 카테고리의 다른 글
자바의 산술 연산자 이해하기 (0) | 2024.09.19 |
---|---|
자바 변수 - 문제와 풀이 예제 (0) | 2024.09.18 |
자바 변수 타입 (1) | 2024.09.17 |
변수 선언과 초기화 (1) | 2024.09.13 |
자바 변수의 기초 (0) | 2024.09.12 |