# DesignPattern

14개의 포스트

Facade

OverView 퍼사드를 영화를 보는 방법에 대한 예시로 들 수 있습니다. 영화를 보려면 아래와 같은 과정을 거쳐야지만 영화를 볼 수 있습니다. 팝콘 기계를 켠다 팝콘 튀기기 시작 전등을 어둡게 조절 스크린을 내린다 프로젝터를 켠다 프로젝터로 DVD신호가 입력되도록 한다 프로젝터를 와이드 스크린 모드로 전환한다 앰프를 켠다 앰프 입력을 DVD로 전환한...

2020년 2월 1일
·
0개의 댓글

Adopter

Overview Adopter의 예시는 플러그 입니다. 국산 플러그와 유럽식 소켓 사이에서 국산 전원 플러그를 유럽식 소켓에 꽂을 수 있게 해 주는 역할을 합니다. image.png 프로그래밍에서도 마찬가지 입니다. 어떤 소프트웨어가 있는데 새로운 업체에서 제공한 클래스 라이브러리를 사용해야 한다고 합니다. 그런데 새로 채택한 업체에서 사용하는 인터페...

2020년 2월 1일
·
0개의 댓글

Singleton

Singleton Overview 인스턴스가 하나 뿐인 특별한 객체입니다. 어디서든지 그 인스턴스에 접근할 수 있도록 합니다. 자신의 단 하나뿐인 인스턴스를 관리하도록 만들면 됩니다. 다른 어떠 클래스에서도 자신의 인스턴스를 추가로 만들지 못하도록 해야 합니다. 어디서든지 그 인스턴스에 접근할 수 있도록 만들어야 합니다. image.png 예제코드...

2020년 1월 26일
·
0개의 댓글

Factory

Overview new 는 구상객체를 뜻합니다. new를 사용하는 것은 구상 클래스의 인스턴스를 만드는 것 입니다. (구상 class: 일반 class interface, abstract ... ) 인터페이스가 아닌 특정 구현을 사용하는 것 입니다. 여러 구상 class들이 있을 때는 어쩔 수 없이 다음과 같은 코드를 만들어야 합니다. 위와 같은 ...

2020년 1월 26일
·
0개의 댓글

Decorator

Overview 객체에 추가적인 요건을 동적으로 첨가합니다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공합니다. 즉, 실행 도중에 intance를 유연하게 확장할 수 있는 디자인패턴입니다. 데코레이터의 클래스 다이어그램을 보면 아래와 같습니다. image.png 위의 그림을 보면 이해가 잘 안갈 수 있습니...

2020년 1월 13일
·
0개의 댓글

Observer

본 시리즈는 Head First Design Pattern 책을 읽고 요약한 내용입니다. Overview 옵저버 패턴에서는 한 객체의 상태가 뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다. 신문구독 매커니즘을 예로 들었을 때 출판사를 주제(subject), 구독자를 옵저버(observ...

2020년 1월 13일
·
0개의 댓글

디자인패턴: 전략패턴

참고: 최범균님의 개발자가 반드시 정복해야 할 객체지향과 디자인 패턴 디자인 패턴이란? 디자인 패턴이란 객체지향적 설계를 하면서 자주 나오는 설계기법(클래스, 객체의 구성, 객체 간 메시지 흐름)을 정리해서 모아놓은 것. 전략 패턴이란? 전략 패턴: RunTime동안 알맞는 알고리즘을 다이내믹하게 선택해서 사용하는 것. (여기서 말하는 알고리즘은 코딩테...

2019년 11월 11일
·
0개의 댓글

중재자 패턴

복잡하게 연관되어 있는 객체들을 하나의 객체에서 처리해주는 패턴 각 객체들은 mediator객체를 제외한 다른 객체들을 알지 못함 객체들간의 상호작용이 복잡하여 서로간의 의존관계가 복잡할 때 하나의 객체가 다른 많은 객체를 참조하여 재사용하기 어려울 때 mediator객체에서 상호작용을 모두 담당하기 때문에 구조가 복잡해져 유지보수가 힘들어질 수 있음

2019년 4월 22일
·
0개의 댓글

옵저버 패턴

객체의 변경사항을 상대 클래스나 객체에 의존하지 않고 통보하고자 하는 경우에 사용 서로 상호작용하는 객체 사이의 결합을 느슨하게 해주어 두 객체 모두 독립적으로 재사용 가능하도록 함 Subject : ConcreteObserver객체를 관리하는 요소 Observer : 데이터의 변경을 통보 받는 인터페이스, ConcreteSubject의 데이터 변경을 Co...

2019년 4월 22일
·
0개의 댓글

싱글톤 패턴

특정 객체가 시스템내에서 오직 하나만 존재하는 것을 보장 어디에서든지 싱글톤 객체에 접근할 수 있도록 함 static으로 선언함으로써 클래스 생성시 메모리 할당(컴파일 타임) 다중 스레드 애플리케이션에서 코드를 수정해줘야 함

2019년 4월 21일
·
0개의 댓글

브리지 패턴

추상과 구현을 분리하여 독립적으로 관리하도록 함 어댑터 패턴과 같이 사용되는 경우가 많음 - 구현부분 Aggregation(집합관계)을 사용 추상을 나타내는 객체와 구현을 나타내는 객체가 동시에 존재하며, 추상을 나타내는 객체가 인스턴스화 될 때 주어진 구현이 알려져야 함 실행 시 두 객체의 연결이 바뀔 수 있기 때문에 유연한 관계를 가지고 있음

2019년 4월 21일
·
0개의 댓글

컴포지트 패턴

전체-부분관계를 가지는 객체들을 표현하기위해 사용됨 사용자는 전체와 부분을 구분하지 않고 동일한 인터페이스를 사용 Component : Leaf클래스와 Composite클래스에 공통인터페이스 정의 Leaf : 구체적인 부분 클래스, 자식 객체를 가지지 않는 개별 객체 Composite : 집합 클래스, 자식 객체를 Componet로서 가지고 있음, Leaf...

2019년 4월 21일
·
0개의 댓글

어댑터 패턴과 퍼싸드 패턴

어댑터 패턴 클라이언트의 의도에 맞게 클래스의 인터페이스를 수정하여 시스템에 사용할 수 있도록 하는 패턴 사용하고자 하는 클래스의 인터페이스가 시스템에 적합하지 않기 때문에 이를 변경해주는 Adapter클래스(Wrapper)를 생성 레거시 시스템을 사용하고자 할 때 많이 적용 클래스 어댑터와 객체 어댑터가 존재 클래스 어댑터 : 어댑터가 어댑티를 상속하여 ...

2019년 4월 21일
·
0개의 댓글

객체지향 개발 원칙 : SOLID

SRP, 단일 책임의 원칙 * 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 함 * 하나의 클래스는 하나의 책임만을 가지고 있어야 함 - OCP, 개방 폐쇄의 원칙 * 프로그램의 확장에 있어서는 개방되어 있어야 하지만, 변경에 있어서는 닫혀있어야 함 * 프로그램에 새로운 기능이 추가될 때, 기존의 코드가 수정되지 않아야 함 - LSP, ...

2019년 4월 21일
·
0개의 댓글