DesignPatterns

    Head First: Design Patterns - 스테이트(상태) 패턴(State Pattern)

    디자인 패턴: 스테이트 패턴(State Pattern) 이 포스팅은 Head First: Design Patterns 책을 보고, 개인적으로 정리한 포스팅입니다. State Pattern 이란? 스테이트(상태) 패턴(State Pattern)을 이용하면 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. 스테이트 패턴은 컨텍스트 객체에 수많은 조건문을 집어넣는 대신에 사용할 수 있는 패턴이라고 생각할 수 있다. Context라는 클래스에는 여러가지 내부 상태가 들어있을 수 있다. Context의 request() 메소드가 호출되면 그 작업은 상태 객체에게 맡겨진다. State 인터페이스에서는 모든 구상 상태 클래스에 대한 공통 인..

    Head First: Design Patterns - 템플릿 메소드 패턴(Template Method Pattern)

    디자인 패턴: 템플릿 메소드 패턴(Template Method Pattern) 이 포스팅은 Head First: Design Patterns 책을 보고, 개인적으로 정리한 포스팅입니다. Template Method Pattern 이란? 템플릿 메소드 패턴(Template Method Pattern)에서는 메소드에서 알고리즘의 골격을 정의한다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의할 수 있다. 템플릿(Template)이란 일련의 단계들로 알고리즘을 정의한 메소드이다. 여러 단계 가운데 하나 이상이 추상 메소드로 정의되며, 그 추상 메소드는 서브클래스에서 구현된다. 이렇게 함으로써 서브클..

    Head First: Design Patterns - 퍼사드 패턴(Facade Pattern)

    디자인 패턴: 퍼사드 패턴(Facade Pattern) 이 포스팅은 Head First: Design Patterns 책을 보고, 개인적으로 정리한 포스팅입니다. Facade Pattern 이란? 퍼사드 패턴(Facade Pattern)은 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 퍼사드에서 고수준의 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있다는 장점이 있다. (복잡한 추상화 같은 것이 필요 없다.) 퍼사드 패턴을 사용하려면, 어떤 서브시스템에 속한 일련의 복잡한 클래스들을 단순화하고 통합한 클래스를 만들어야 한다. 위에서처럼 서브 시스템들을 통합한 인터페이스인 퍼사드 클래스를 사용한다. 홈 씨어터 영화를 보려면 Light를 키고, Projector를 ..

    Head First: Design Patterns - 커맨드 패턴(Command Pattern)

    디자인 패턴: 커맨드 패턴(Command Pattern) 이 포스팅은 Head First: Design Patterns 책을 보고, 개인적으로 정리한 포스팅입니다. Command Pattern 이란? 커맨드 패턴(Command Pattern)을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러 가지 다른 요구사항을 집어넣을 수도 있다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할 수 도 있고, 작업취소 기능도 지원 가능하다. 작업을 요청한 쪽과 그 작업을 처리하는 쪽을 분리시킬 수 있다는게 핵심이다. 커맨드 패턴에서는 커맨드 객체라는 일련의 행동을 특정 리시버하고 연결시킴으로써 요구사항을 캡슐화한다. 이렇게 하기 위해서 행동과 리시버를 한 객체에 집어넣고, execute()라는..

    Head First: Design Patterns - 추상 팩토리 패턴(Abstract Factory Pattern)

    디자인 패턴: 추상 팩토리 패턴(Abstract Factory Pattern) 이 포스팅은 Head First: Design Patterns 책을 보고, 개인적으로 정리한 포스팅입니다. 이전 포스팅 간단한 팩토리, 팩토리 메소드 패턴과 연결되는 내용입니다. Abstract Factory Pattern 이란? 추상 팩토리 패턴(Abstract Factory Pattern)에서는 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성할 수 있다. 추상 팩토리 패턴을 사용하면 클라이언트에서 추상 인터페이스를 통해서 일련의 제품들을 공급받을 수 있다. 이 때, 실제로 어떤 제품이 생산되는지는 전혀 알 필요도 없다. 따라서 클라이언트와 팩토리에서 생산되는 제품을 분리할 수 있..

    Head First: Design Patterns - 팩토리 메소드 패턴(Factory Method Pattern)

    디자인 패턴: 팩토리 메소드 패턴(Factory Method Pattern) 이 포스팅은 Head First: Design Patterns 책을 보고, 개인적으로 정리한 포스팅입니다. 이전 포스팅 간단한 팩토리와 연결되는 내용입니다. Factory Method Pattern 이란? 팩토리 메소드 패턴(Factory Method Pattern)에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 만든다. 팩토리 메소드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에 맡긴다는 것이다. Creator에는 제품을 가지고 원하는 일을 하기 위한 모든 메소드들이 구현되어 있다. 하지만, 제품을 만들어 주는 팩토리 메소드는 추상 메소드로 정의되어 ..