디자인 패턴(8)
-
MVP 패턴
MVP 패턴이란 MVP 패턴은 MVC 패턴으로부터 파생되었으며 MVC에서 C에 해당하는 컨트롤러가 프레젠터(Presenter)로 교체된 패턴이다. View와 Presenter는 일대일 관계이기 때문에 MVC패턴보다 더 강한 결합을 지닌 디자인 패턴이다. Model - 애플리케이션의 데이터인 데이터베이스, 상수, 변수 등을 뜻한다.View - 모델을 기반으로 사용자가 볼 수 있는 화면을 뜻한다.Presenter - Model과 View를 매개체로한다는 점에서 Controller와 유사하지만, View에 직접 연결되는 대신 인터페이스를 통해 상호작용 한다는 차이가 있다. 장점 Model과 View의 결합도를 낮추면, 새로운 기능 추가 및 변경을 할 때마다 관련된 부분만 코드를 수정하면 되기 때문에 확장성..
2024.06.07 -
MVC 패턴
MVC Model, View, Controller로 이루어진 디자인 패턴 Model - 데이터베이스, 상수, 변수 등View - 사용자가 보는 화면 / 프론트Controller - Model과 View를 이어주는 역할 MVC 패턴을 이용한 대표적인 프레임워크 - Spring Spring의 MVC 처리 순서 Client 요청이 DispatcherServlet에게 전달된다.DispatcherServlet은 HandlerMapping을 사용해서 client요청을 처리할 Controller 객체를 추출한다.Controller에서 Moder을 사용하여 client의 요청을 처리한다.Cotroller는 처리 결과 data를 Model(AndView)에 담아서 return 한다.DispatcherServlet..
2024.06.05 -
이터레이터 패턴
이터레이터 패턴 일련의 데이터 집합에 대하여 순차적인 접근(순회)을 지원하는 패턴데이터 집합이란 객체들을 그룹으로 묶어 자료의 구조를 취하는 컬렉션을 의미별도의 이터레이터 객체를 반환받아 이를 이용해 순회하기 때문에 집합체의 내부 구조를 노출하지 않고 순회 가능 배열이나 리스트같은 경우 순서가 연속적인 데이터 집합이기 때문에 간단한 for문을 통해 순회할 수 있지만, 데이터 저장 순서가 정해지지 않고 적재되는 다른 복잡한 컬렉션들은 기준이 애매해진다. 이처럼 복잡하게 얽혀있는 자료 컬렉션들을 순회하는 알고리즘 전략을 정의하는 것을 이터레이터 패턴이라고 한다. 이터레이터 패턴 구조 자바의 컬렉션 프레임워크(JCF)에서 각종 컬렉션을 무리 없이 순회할 수 있는 것도 내부에 미리 이터레이터 패턴이 적용..
2024.06.03 -
프록시 패턴과 프록시 서버
프록시 패턴? 프록시 패턴(Proxy Pattern)은 대상 원본 객체를 대리하여 대신 처리하게 함으로써 로직의 흐름을 제어하는 행동 패턴이다. 객체 지향 프로그래밍에 접목해 보면 클라이언트가 대상 객체를 직접 쓴느게 아니라 중간에 프록시(대리인)을 거쳐서 쓰는 코드 패턴이다. 중계 대리인을 이용하는 이유? 중계 대리인은 클라이언트가 대상 객체에 접근하기 전 흐름을 가로채 클라이언트의 정보(요청)를 필터링 하거나 데이터를 가공하는 역할을 한다.대상 클래스가 민감한 정보를 가지고 있거나 인스턴스화 하기에 무겁거나 추가기능을 가미하고 싶은데, 원본 객체를 수정할 수 없는 상황일 때를 극복하기 위해서이다. 프록시 패턴을 사용해서 누릴 수 있는 효과 보안 : 프록시는 클라이언트가 작업을 수행할 수 있..
2024.05.31 -
옵저버 패턴
옵저버 패턴? 옵저버 패턴은 객체의 상태 변화를 관찰하는 관차자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하여 자동으로 내용이 갱신되는 일대다 의존성을 가진 디자인 패턴이다. 사용 분산 이벤트 핸들링 시스템이벤트 기반 프로그래밍특정 행동이 자동으로 / 순서에 따라 발생하는 것이 아닌 어떤 일에 대한 반응으로 동작. 장점 실시간으로 한 객체의 변경사항을 다른 객체에 전파할 수 있다. (트위터, 유튜브)느슨한 결합(Loose Coupling)을 사용한다. 단점 너무 많이 사용할 경우 상태 관리가 힘들 수 있다.데이터 배분에 문제가 발생하면 큰 문제로 발전할 수 있다. Loose Coupling 클래스를 느슨..
2024.05.30 -
전략 패턴
전략 패턴 (Strategy pattern) = 정책 패턴 (Policy pattern) 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고 사용하며, 동적으로 전략 수정이 가능한 패턴전략 패턴의 의도동일 계열의 알고리즘군을 정의걸어서, 뛰어서, 날아서차갑게, 따뜻하게, 냉동으로, 뜨겁게각 알고리즘을 캡슐화이동 전략온도 전략이들을 상호교환 가능하도록 만듦 사용하는 이유 키오스크를 예시로언어 선택한국어중국어일본어결제 방법현금카드 전략 패턴 미 사용 시키오스크 추상 클래스한국어 현금, 카드 클래스 2개중국어 현금, 카드 클래스 2개일본어 현금, 카드 클래스 2개총 6개의 키오스크 클래스가 필요.카테고리가 늘어나거나 (화면 밝기 - 어둡게, 보통, 밝게) 알고리즘군이 늘어나게 되면 (언어선택 - 영어)..
2024.05.29