9. Template Method Pattern 9. Template Method Pattern(템플릿 메소드 패턴) 9.1 Template Method Pattern 이란이 패턴은 알고리즘의 틀(템플릿)을 만들기 위한 패턴입니다.방식은 아래와 같습니다.- 추상 클래스에서 알고리즘의 골격을 담당함 메소드를 정의합니다.- 알고리즘의 단계를 담당할 메소드들을 정의합니다.- 알고리즘의 단계 중 서브클래스에서 구현하고 싶은 부분은 추상 메소드로 정의합니다. 9.2 Template Method Pattern의 장점이런식으로 알고리즘을 캡슐화 하면 여러 장점이 있습니다.- 알고리즘의 일부 단계를 서브클래스 마다 다르게 구현할 수 있다- 알고리즘의 공통부분을 정의하는 코드를 서브클래스들에서 상속을 통해 코드의 재사용이 가능합니다.- 알고리즘을 수정할 일이 발생하면.. Design Pattern/Head FIrst Design Pattern 6년 전
8. Facade Pattern 8 Facade Pattern(퍼사드 패턴) 8.1 Facade Pattern 이란Facade Pattern을 사용하는 목적은 단순합니다. 서브 시스템 클래스들을 통합해 더 쉽게 사용하기 위함이죠.- Facade class는 서브 시스템 클래스들의 reference를 가집니다. 8.2 HomeTheaterFacade간단한 예를 통해 Facade Pattern의 사용 목적을 보여드리겠습니다.영화를 보기위해선(하나의 시스템) 프로젝터, DVD 플레이어, 영화관 조명, 스크린(서브 시스템)이 필요하죠.이런 서브시스템들을 하나하나 조작해야한다면 번거로울 겁니다. 서브시스템들을 통합해서 한번에 조작할 수 있도록 해보죠. 영화를 보기위해서는 전등을 켜고lights.on();스크린을 내린 뒤 screan.down().. Design Pattern/Head FIrst Design Pattern 6년 전
7. Adaptor Pattern 7 Adaptor Pattern(어뎁터 패턴) 7.1 어뎁터일상에서 어뎁터란 말을 많이 들어보셨을거에요.우리나라 전자제품의 플러그를 일본에 가져가면 콘센트가 달라서 끼울 수 없는게 그 예죠. 우리나라 플러그와 콘센트 일본 콘센트 이런 경우 우리는 어뎁터를 이용해 규격이 다른 플러그(우리나라 플러그)를 다른 곳(일본 콘센트)에 사용할 수 있죠. 어뎁터 패턴도 마찬가지랍니다. 어떠한 인터페이스를 사용하는 코드에 해당 인터페이스 대신 어뎁터를 씌운 다른 인터페이스를 사용할 수 있도록하는 패턴이죠. 7.2 Adaptor Pattern 이란한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다.어뎁터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없었던 클래스들을 연결해서 쓸 .. Design Pattern/Head FIrst Design Pattern 6년 전
6. Command Pattern 6. Command Pattern (커맨드 패턴) 6.1 Command Pattern의 다이어그램 - 실제 기능을할 메소드를 가진 객체는 receiver 클래스입니다.- command interface를 구현한 각 concreteCommand(구상커맨드클래스)들은 receiver들의 reference를 가졌고 receiver들의 메소드를 호출합니다. - invoker class는 setCommand() 메소드를 이용해 concreteCommand들을 설정하고 execute() 메소드를 호출함으로서 receiver의 메소드를 호출합니다. 6.2 Simple RemoteControlinvoker, command, receiver가 어떻게 연결되는지 간단한 리모컨 예를통해 보여드릴게요.- main class .. Design Pattern/Head FIrst Design Pattern 6년 전
4. Factory Pattern - (1) SImple Factory 4. Factory Pattern 4.1 'new' 연산자를 사용한다는 것의 의미.new 연산자를 사용한다는 것은 구상 클래스의 인스턴스를 만드는 것을 의미구상 클래스를 바탕으로 코딩을 하면 결합도가 높아져 추후 코드를 수정해야 할 가능성이 높아짐 4.1.1 new 연산자의 문제일까?객체를 만들기 위해서는 언젠가 반드시 new 연산자를 사용할 수 밖에 없기 때문에 new 연산자 자체에는 문제가 없음. 4.1.2 해결방법새로운 구상 클래스가 추가,삭제될 때 마다 기존의 구현 위주로 프로그래밍한 코드를 수정해줘야한다. == 인스턴스 생성은 변화하는 부분바뀌는 부분을 바뀌지 않는 부분으로 부터 분리해 캡슐화한다는 디자인 원칙에 따라 객체 생성부분을 분리하여 캡슐화한다. 4.2 Factory Pattern의 종.. Design Pattern/Head FIrst Design Pattern 6년 전
3. Decorator Pattern 3. Decorator Pattern (장식 패턴) 3.1 Decorator Pattern 이란? 상속을 통한 기능확장이 아니라 구성을 통한 기능확장을 가능하게 해주는 패턴 - Decorator super class의 sub class(decorator)를 만들어 객체를 감쌈으로써 기능을 유연하게 확장할 수 있다. 객체는 언제든지 감쌀 수 있기 때문에 실행중에 필요한 decorator를 마음대로 적용할 수 있다. (객체에 추가적인 사항을 동적으로 추가할 수 있게 해준다) (=원하는 기능을 가진 decorator를 미리 만들어 두기만 한다면 실행중 언제든 해당기능을 가진 decorator를 적용해 기능을 추가할 수 있다.)- decorator들의 super class와 감쌀 객체의 super class는 .. Design Pattern/Head FIrst Design Pattern 6년 전