일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 웹
- js
- 한번에끝내는JavaSpring웹개발마스터초격차패키지Online강의
- String
- 직장인자기계발
- Spring
- java
- 리눅스
- 스프링
- 직장인인강
- 패스트캠퍼스
- 자바연습문제
- 자바예제
- 자바기초
- 자바
- ncs
- DesignPattern
- 패스트캠퍼스후기
- 디자인패턴
- DB
- 한번에끝내는JavaSpring웹개발마스터초격차패키지Online
- linux
- javabasic
- 디자인
- java기초
- 재택근무
- 자바기본
- 패캠챌린지
- 데이터베이스
- 국비
- Today
- Total
목록디자인패턴 (16)
FIF's 코딩팩토리
브리지(Bridge) 패턴 구현 뿐만 아니라 추상화된 부분까지 변경시켜야 하는 경우에 사용하는 패턴이다. 추상화된 부분과 추상 클래스/인터페이스를 구현한 클래스를 서로 다른 클래스 계층구조에 집어넣음으로써 그 둘을 모두 변경시킬 수 있다. 브리지의 장점 1. 구현을 인터페이스에 완전히 결합시키지 않았기 때문에 구현과 추상화된 부분을 분리시킬 수 있다. 2. 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있습니다. 3. 추상화된 부분을 구현한 구상 클래스를 바꿔도 클라이언트 쪽에는 영향을 끼치지 않는다. 브리지의 활용법 및 단점 1. 여러 플랫폼에서 사용해야 할 그래픽스 및 윈도우 처리 시스템에서 유용하게 쓰인다. 2. 인터페이스와 실제 구현부를 서로 다른 방식으로 변경해야 하는 경우에 유용하게 ..
MVC 패턴 정의 모델-뷰-컨트롤러(Model-View-Controller)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 어플리케이션을 만들 수 있다. View - 모델을 표현하는 방법을 제공하는 사용자 인터페이스. 일반적으로 화면에 표시하기 위해 필요한 상태 및 데이터를 모델에서 직접 가져온다. Model - 모든 데이터, 상태 및 어플리케이션 로직이 들어있다. 뷰와 컨트롤러에서 모델의 상태를 조작하거나 가져오기 위한 인터페이스를 제공하고 모델에서 자신의 상태 변화에 대해서 옵저버들에게 알려주긴 하지만 기본적..
컴파운드 패턴(Compound Pattern) 정의 두 개 이상의 패턴을 결합하여 일반적으로 자주 등장하는 문제들에 대한 해법을 제공하는 패턴이다. 컴파운드 패턴은 딱히 정해진 의미, 단점, 장점이 뚜렷하지 않다. 패턴을 잘 활용하기 위해 서로 다른 패턴을 섞어쓰는 디자인 방법이기 때문이다. 다만, 주의할점은 패턴 몇 개를 결합해서 쓴다고 무조건 컴파운드 패턴이 되는 것은 아니다. 컴파운드 패턴이라 불릴 수 있으려면 여러 가지 문제를 해결하기 위한 용도로 쓰일 수 있는 일반적인 해결책 이어야 한다. 웹에서 벌어지는 다양한 요청과 이에 대응하는 로직을 처리하고 결과를 브라우저로 보여주기 위한 MVC 패턴이 대표적이다. 가장 먼저 책에서 등장장한 오리 예제를 살펴보자. 오리들은 꽥꽥거리는 행동이 들어있다. ..
프록시(Proxy Pattern) 패턴 정의 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴이다. 프록시는 보통 다른 객체에 대한 대변자라 봐도 무방하다. 프록시는 자신이 대변하는 객체와 그 객체에 접근하고자 하는 클라이언트 사이에서 여러가지 방식으로 작업을 처리한다. 보안을 위해 인터넷을 통해 들어오는 메소드 호출을 쫓아내거나 게으른 객체들을 대신해 끈기 있게 기다리는 일을 맡기도 한다. 프록시의 종류 1. 원격 프록시 - 원격 프록시는 다른 JVM에 들어 있는 객체의 대변인에 해당하는 로컬 객체이다. 프록시의 메소드를 호출하면 그 호출이 네트워크를 통해 전달되어 결국 원격 객체의 메소드가 호출되고 그 결과는 다시 네트워크를 통해 프록시를 거쳐 클라이언트..
스테이트 패턴(State Pattern) 정의 객체의 내부 상태가 바뀜에 따라 객체의 행동을 바꿀 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. 스테이트 패턴은 상태를 별도의 클래스로 캡슐화한 다음 현재 상태를 나타내는 객체에게 행동을 위임한다. 따라서 내부 상태가 바뀌면 행동이 달라지게 된다. if, switch문과 같은 분기문을 패턴을 이용해 캡슐화, 분리한다고 생각하면 된다. “객체의 클래스가 바뀌는 것과 같은” 이라는 표현을 쓴 이유는? 클라이언트 입장에서는 사용하는 객체의 행동이 완전히 달라지면 마치 그 객체가 다른 클래스로부터 만들어진 객체처럼 느껴진다. 실제로는 다른 클래스로 변신한게 아니고 구성을 통해 객체의 상태를 여러가지로 바꿔가며 사용하는 것이다. 스테이트 ..
컴포지트 패턴(Composite Pattern) 정의 객체들을 트리구조로 구성하여 부분과 전체를 나타내는 계층구조로 만들 수 있다. 클라이언트에서 개별 객체와 다른 객체들로 구성된 복합 객체(composite)를 똑 같은 방법으로 다룰 수 있다. 식당 메뉴를 예로 들어 생각해본다면, 중첩되어 있는 메뉴 그룹과 메뉴 항목을 똑같은 구조 내에서 처리할 수 있게끔 하는 것이다. 메뉴와 메뉴항목을 같은 구조에 집어넣어서 부분-전체 계층구조를 생성할 수 있다. 이런 복합구조를 사용하면 복합 객체와 개별 객체에 대해 구분없이 똑 같은 작업을 적용할 수 있다. 컴포지트 패턴 클래스 다이어그램 컴포지트 패턴을 메뉴에 적용시킨다면 우선 구성요소의 인터페이스를 만드는 것부터 시작한다. 이 인터페이스는 메뉴와 메뉴 항목 모..
퍼사드 패턴(Facade Pattern) 정의 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있다. 패턴을 사용할때는 항상 패턴이 어떤 용도로 쓰이는지를 잘 알아둬야 한다. 퍼사드 패턴은 단순화된 인터페이스를 통해 서브시템을 더 쉽게 사용할 수 있도록 하기 위한 용도로 쓰인다. 홈씨어터로 퍼사드 패턴 구현 전선과 프로젝터를 설치하고, 각 장치들을 케이블로 연결하는 등등 여러 인터페이스들이 나열되어 있다. DVD영화를 보려면? 1. 팝콘 기계를 켠다. poper.on(); 2. 팝콘 튀기기 시작. poper.pop() 3. 전등을 어둡게 조절. light.dim(10) 4. 스크린을 내린다. scree..
어댑터 패턴(Adapter Pattern) 정의 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 호환되지 않는 인터페이스를 사용하는 클라이언트를 그대로 활용할 수 있다. 이렇게 함으로써 클라이언트와 구현된 인터페이스를 분리시킬 수 있으며, 향후 인터페이스가 바뀌더라도 그 변경 내역은 어댑터에 캡슐화 되기 때문에 클라이언트는 바뀔 필요가 없어진다. 어댑터 패턴 클래스 다이어 그램 전기 콘센트를 보면 이해가 쉽다. 한국의 표준 플러그를 일본 전원 소켓에 바로 끼우지 못해 동그란 모양을 일자로 바꿔주는 어댑터를 끼워야 한다. 이와 같이 어댑터는 소켓의 인터페이스를 플러그에서 ..