디자인 패턴 9

Design Pattern을 공부해보자 3탄

Design Pattern을 공부해보자 커맨드 패턴 커맨드 패턴을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러 가지 다른 요구 사항을 집어 넣을 수도 있다. 또한, 요청 내역을 큐에 저장하거나 로그로 기록 할 수 있으며, 작업 취소 기능도 지원 한다. 커맨드 패턴 코드 어댑터 패턴 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어댑터를 이용하면, 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 어댑터 패턴에서는 2가지가 존재한다. 객체 어댑터 클래스 어댑터 Java에서는 다중 상속을 지원하지 않기에, 클래스 어댑터는 적용할 수 없습니다. 퍼사드 패턴 어떤 서브 시스템의 일련의 인터페이스에 대한 통합된 인터..

Design Pattern을 공부해보자 2탄

Design Pattern을 공부해보자 추상 팩토리 패턴 서로 연관된 또는 의존적인 객체들로 이루어진 제품군을 생성하기 위한 인터페이스를 제공한다. 구상 클래스는 서브 클래스에 의해 만들어 진다. 추상 팩토리 패턴은 예시 코드로 치면, 먼저 피자의 지점에 따른 피자가 공통적인 피자라는 점에는 같지만, 속재료에 차이에 대해 집중하는 편이다. 그런 점에서 팩토리 메소드 패턴과는 다르다. 물론, 이용할 수는 있으나, 결론적으로 차이는 추상 팩토리 패턴은 상속을 통한 확장이 아닌, Composition을 통해 확장을 해나가는 패턴이다. 추상 팩토리 패턴 코드 팩토리 메소드 패턴 객체를 생성하기 위한 인터페이스를 만든다. 어떤 클래스의 인스턴스를 만들지는 서브 클래스에서 결정하도록 합니다. 팩토리 메소드를 이용하..

Design Pattern을 공부해보자 1탄

Design Pattern을 공부해보자 Strategy Pattern 전략 패턴은 쉽게 말해 확장성을 위하여 관심을 분리 시키는 것인데, 관심 분리를 하는 초점이 바로 객체의 행동이다. 객체의 다양한 행동을 위해 분리를 하는데 전제 조건은 특정 객체는 하는데 다른 객체는 그 행동이 필요하지 않을 수 있다. 고로, 객체마다 달라지는 부분과 달라지지 않은 부분을 분리 시키고 해당 코드들을 특정 군으로 모으는 것이다. 그래서 내가 필요로 할 때 추상화 된 기능을 구현하고, 실제 사용하는 측에서는 구현한 클래스에게 해당 기능을 위임 시키는 형태로 만든다. 그래서 내가 어떤 전략을 취하느냐에 따라 해당 객체가 특정 기능을 사용할지 말지 또한 결정 할 수 있게 된다. 전략 패턴 - code Observer 패턴 옵..

[책] GoF의 디자인 패턴

IT 도서 리뷰Gof의 디자인패턴저자 : 에릭감마, 리처드 헬름, 랄프 존슨, 존 블리시디스우선 이 책에 대해서는 할 말이 있는게 뭐냐고한다면, Chapter 별로 분리 되어진 내용 구성은 참 좋았다. 그러나 이 책을 구입하기 전에 알아둬야 할 것은 이 책의 예제는 C++ 언어로 작성 되어 있다는 점이다. 물론 나는 Java 언어를 Major 언어로 두는 Java 개발자이다. Ruby, Python을 취미 삼아 사용하는 사람이기도 하지만, C++의 경우는 상당히 난해하다. 일반 대학교에서 컴퓨터 공학을 전공하는 사람이라면 알겠지만, C ++의 언어는 우선 C 스타일로도 프로그래밍이 가능하고, 객체지향도 가능하다. 물론 중요한 것은 자신이 얼마나 객체지향스럽게 C++를 이용 할 줄 아느냐일 것 같다. 서론..

책 리뷰 2015.11.05

GoF의 디자인 패턴 - 행동 패턴

행동 패턴 ( Behavioral pattern )어떤 처리의 책임을 어느 객체에 할당하는 것이 좋은지.알고리즘을 어느 객체에 정의하는 것이 좋은지등을 다룬다.객체나 클래스에 대한 패턴을 정의하는 것이 아니고, 그들 간의 교류방법에 대하여 정의하는 것이 주된 논의 사항이다.이 행동패턴을 사용하면 우리는 객체간의 제어 구조보다는 객체들을 어떻게 연결시킬 것인지에 더 중점을 두는 패턴이다. 행동 클래스 패턴(Behavioral class pattern)은 클래스 사이에 행동 책임을 분산하기 위해서 상속을 사용한다. 템플릿 메소드 패턴은 간단하며, 일반적인 패턴이다. 템플릿 메서드는 알고리즘에 대한 추상화된 정의로 알고리즘을 한 단계씩 정의한다. 각 단계는 추상연산 또는 기본연산 중 하나이다. 기본 연산은 자..

GoF의 디자인 패턴 - 구조 패턴

* 디자인 패턴은 목적을 가장 중요시해야 한다. - 구조 패턴 구조(Structural) 패턴은 더큰 구조를 형성하기 위해서 어떻게 클래스와 객체를 합성하는지와 관련된 패턴입니다. 구조 클래스 패턴은 상속 기법을 이용하여 인터페이스나 구현을 복합 하고, 적응자 클래스는 적응 대상 클래스에서 특성들을 상속 받아, 적응 대상자에 정의 된 인터페이스를 마치 자신이 제공하는 것처럼 해준다. 구조 객체 패턴은 인터페이스나 구현을 복합하는 것이 아니라 새로운 기능을 실현하기 위해 객체를 합성하는 방법을 제공한다. 복합체 패턴은 두 종류의 객체 대한 클래스로 클래스 계층 구조를 어떻게 형성하는지 보여준다. 프록시 패턴에서 프록시는 다른 객체의 대리자 역할을 수행하며, 프록시의 기능은 다양하다. 플라이급 패턴은 객체들..

GoF의 디자인 패턴 - 생성 패턴

생성 패턴 - 인스턴스를 만드는 절차를 추상화하는 패턴이다.객체를 생성,합성하는 방법이나 객체의 표현 방법과 시스템을 분리시켜 준다. 클래스 생성 패턴이 인스턴스로 만들 클래스를 다양하게 만들기 위한 용도로 상속을 사용하는 반면,객체 생성 패턴은 인스턴스화 작업을 다른 객체에게 떠넘길 수도 있다. * 생성 패턴을 따라 다니는 두 가지1. 생성 패턴은 시스템이 어떤 구체 클래스를 사용하는지에 대한 정보를 캡슐화합니다. 2. 생성 패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 서로 맞붙는지에 대한 부분을 완전히 가려줍니다. 결론적으로 생성 패턴을 이용하면, 무엇이 생성되고 누가 생성하는지, 언제 생성 하는지, 어떻게 생성 되는지에 대해 결정하는데 유연성을 제공해준다. 추상 팩토리 접미어 - Kit ..

Singleton Pattern for Java

프로세스 내에 하나의 객체만 존재해야 하는 경우 보통 선대 프로그래머들이 사용하던싱글톤 클래스 혹은 싱글톤 패턴을 사용합니다. 그 방법은 여러가지가 존재하며 그 중에서 가장 유명한 3가지를 소개 합니다.출처 : Effective Java 2 edtion - public final field를 이용한 singleton - static factory를 이용한 singleton - Enum type을 이용한 sington 원소가 하나뿐인 enum 자료형이 가장 좋은 구현 방법이라고 말한다. 추가적으로 싱글턴 클래스를 직렬화 가능 클래스로 만들려면, implements Serializable을 추가하는 것으로도 부족하다.모든 필드는 transient로 선언하고, readResolve method를 추가해야 한다..

생성자 인자가 많을때 어떤 패턴을 써야 하나?

생성자의 인지가 많을때 처리 하는 방법이 보통 여러가지 존재하는게 그 중 3가지를 소개하겠다.출처 : Effective Java 2 edtion - 점층적 생성자 패턴 - 자바빈 패턴 - 생성자 Builder 패턴 무단 수정 및 배포는 금지합니다. 모든 내용은 본 블로그 운영자가 정리한 내용입니다. 참조한 정보에 대해서는 출처를 남기고 있습니다. 틀린 내용 / 오류가 포함된 내용은 댓글로 남겨주세요. choiseungho0822@gmail.com 보내주셔도 됩니다. Seungdols Wiki 운영중입니다.

반응형