일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Linux
- Tizen
- 단통법
- 우분투
- 타이젠
- 손민한
- 조세피난처
- ubuntu 12.04
- Git
- arm
- ubuntu
- python
- 안드로이드
- 문파문파
- 뉴스타파
- NC다이노스
- 국정원
- 태그를 입력해 주세요.
- 애플
- mysql
- 리뷰
- 프로야구
- 블로그
- 문파문파 공략
- 김경문
- 데이터베이스
- 인공지능
- NC 다이노스
- 해외직구
- 야구
- Today
- Total
목록디자인 패턴 (5)
꿈꾸는 사람.
Design Pattern정의UML과 같은 일종의 설계 기법이며, 설계방법이다.SW 설계에서 발생할 수 있는 문제들을 해결해온 전문가들의 경험을 모아 정리한 것이다.목적SW 설계시 SW 재사용성, 호환성, 유지보수성을 보장하여 '올바른 설계'를 빠르게 만들 수 있게 함.구성요소 이름 설계 문제와 해법을 서술 문제 해결할 문제와 그 배경을 설명 해법 설계를 구성하는 요소들과 그 요소들 간의 관계, 책임 그리고 협력 관계 서술 결과 디자인 패턴을 적용해서 얻은 결과와 장단점을 서술 원칙 SRP 객체는 둘 이상의 책임을 갖지 않게 한다. OCP 클래스 확장에 대해서는 열려 있으나 변경에 대해서는 닫혀 있다. LSP 자식 타입은 부모 타입이 사용되는 곳에 대체 가능 자식 클래스는 부모의 책임을 넘지 말고 자식 ..
퍼사드 패턴을 이해하기 위해 실 생활의 예를 살펴보자.홈 씨어터는 DVD 플레이어, CD 플레이어, 프로젝터, 자동 스크린, 서라운드 음향 등으로 이루어져 있다.홈 씨어터의 각 장치들은 전원과 케이블로 연결되어야 한다.그리고 영화를 보기 위해 해야 할 일들을 나열해 보자.전등을 어둡게 조절스크린을 내린다.프로젝터를 켠다.프로젝터로 DVD 신호가 입력되게 한다.프로젝터를 와이드 스크린 모드로 전환한다.앰프를 켠다.앰프 입력을 DVD로 전환한다.앰프를 서라운드 음향 모드로 전환한다.앰프 볼륨을 중간(5)으로 설정한다.DVD 플레이어를 켠다.DVD를 재생한다.(시스템 구성이 복잡할 수록 조작이 어려워진다.) 이런 복잡한 일을 간단히 처리하기 위해 퍼사드 패턴을 이용해 보자. 1. 퍼사드 패턴 (Facade P..
실생활에서 어댑터의 역할은 한국 플러그를 미국이나 유럽의 소켓에 꽂을 수 있도록 인터페이스를 변환하는 역할을 한다.객체 지향 어댑터도 일상 생활에서 사용하는 어댑터와 똑같은 역할을 한다. 소프트웨어 시스템은 여러 모듈로 구성되고 여러 업체에서 제공한 인터페이스를 사용한다.기존 소프트웨어 시스템이 변경 또는 갱신될 수 있고 업체의 인터페이스 역시 그러하다.새로운 업체의 인터페이스를 채택해야 할 수도 있다.이때 새로운 업체의 인터페이스가 기존 소프트웨어 시스템과 다르다면 둘 중 하나를 고쳐야 한다.문제는 양쪽 모두 변경할 수 없는 상황 발생하며 어댑터 패턴이 해결책이 된다. 어댑터 패턴이 동작하는 원리는 다음 그림과 같고 설명은 아래에 추가한다. 클라이언트에서 어댑터를 사용하는 방법 (1) 클라이언트에서 타..
프로그램을 작성 중 객체를 하나만 써야 하는 경우가 많이 있다. 스레드 풀, 캐시, 사용자 설정과 레지스트리 설정을 처리하는 객체와 그래픽 카드, Wi-Fi나 bluetooth 장치를 위한 디바이스 드라이버와 같은 것들이 대표적인 예이다. 쉬운 접근법은 전역 변수를 사용하는 것이다.자바의 전역 변수는 기본적으로 객체에 대한 정적 레퍼런스이다.처음부터 끝까지 인스턴스를 가져야 하고 게으른(lazy) 인스턴스 생성을 할 수 없다.또한 전역 레퍼런스를 자꾸 만들게 되어 네임스페이스가 지저분해진다. 이럴 때 인스턴스가 하나 뿐인 객체를 만들 수 있는 디자인 패턴이 필요하다. 1. 싱글턴(Singleton) 패턴 개념. 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고, 그 인스턴스에 대한 전역 접근할 수..
느슨한 결합을 이용하는 객체지향 디자인인 팩토리 패턴에 대한 글이다.객체의 인스턴스를 만드는 작업은 항상 공개되어야 하는 것은 아니다.팩토리 패턴을 이용하여 불필요한 의존성을 없앨 수 있다.java의 "new"는 구상 클래스의 인스턴스를 만드는 것이다. 1. 추상(abstract) vs 구상(concrete) 추상(abstract) 클래스 구현은 제공하지 않는 'operation'을 정의하고 있는 'class'이다. 인스턴스를 만들 수 없는 클래스. 구상(concrete) 클래스 추상(abstract)가 아닌 클래스이다. 오퍼레이션이 구현(implement)을 제공하는 클래스이다. 팩토리 패턴에는 추상 클래스를 이용하는 추상 팩토리 패턴이 있어 해당 용어에 대한 간단한 정의를 알아 보았다.2. 팩토리 패..