[Design Pattern] 반복자 패턴(Iterator Pattern)과 컴포지트 패턴(Composite Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다.9. 컬렉션 잘 관리하기반복자 패턴 반복자 패턴(Iterator Pattern)은 객체의 구현을 노출하는 것 없이 객체의 모든 요소들을 순차적으로 접근하는 방법을 제공한다.  디자인 원칙애플리케이션에서 달라지는 부분을 식별하고 불변으로부터 그것들을 분리해라. (Identify the aspects of your application that vary and separate them from what stays the same.)달라지는 부분을 찾아서 나머지 코드에 영향을 주지 않도록 캡슐화(encapsulate)한다. 그러면 나중에 바뀌지 않는 부분에는 영향을 미치지 않고 그 부분만 고치거나 확장할 수 있다.구현이 아니라 인터페이스에 프로그래..
[Design Pattern] 템플릿 메소드 패턴(Template Method Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다.8. 알고리즘 캡슐화하기템플릿 메소드 패턴 템플릿 메소드 패턴(Template Method Pattern)은 메소드에서 알고리즘의 뼈대를 정의하고, 서브클래스에게 알고리즘의 몇몇 단계를 맡긴다. 템플릿 메소드 패턴은 알고리즘의 구조를 변경하는 것 없이 알고리즘의 특정 단계를 서브클래스가 재정의하도록 한다. 디자인 원칙애플리케이션에서 달라지는 부분을 식별하고 불변으로부터 그것들을 분리해라. (Identify the aspects of your application that vary and separate them from what stays the same.)달라지는 부분을 찾아서 나머지 코드에 영향을 주지 않도록 캡슐화(encapsulate)..
[Design Pattern] 어탭터 패턴(Adapter Pattern), 퍼사드 패턴(Facade Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다.7. 적응시키기어탭터 패턴 어탭터 패턴(Adapter Pattern)은 클래스의 인터페이스를 클라이언트가 요구하는 다른 인터페이스로 변환한다. 어댑터 패턴을 사용하면 호환되지 않아서 함께 사용할 수 없었던 클래스를 작동할 수 있게 해준다. 어댑터 패턴 예시public interface Duck { public void quack(); public void fly();}public class MallardDuck implements Duck { @Override public void quack() { System.out.println("꽥꽥"); } @Override public void fly..
[Design Pattern] 커맨드 패턴(Command Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다.6. 호출 캡슐화하기커맨드 패턴 커맨드 패턴(Command Pattern)은 요청을 객체로 캡슐화하여 다른 객체들을 다양한 요청에 따라 매개변수화 할 수있고, 요청을 큐에 넣거나 로그를 남기며, 실행 취소가 가능한 작업을 지원할 수 있게 한다. 예시public interface Command { public void execute(); public void undo();}public class NoCommand implements Command { public void execute() { } public void undo() { }}public class Light { String location; public Light(Stri..
[Design Pattern] 싱글턴 패턴(Singleton Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다.5. 하나뿐인 특별한 객체 만들기싱글턴 패턴 싱글턴 패턴(Singleton Pattern)은 클래스 인스턴스가 오직 1개만 있음을 보장하고, 그 인스턴스로의 전역 접근을 제공한다. 멀티스레딩 문제 해결하기public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } ..
[Design Pattern] 팩토리 패턴(Factory Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다. 4. 객체지향 빵 굽기팩토리(Factory) 객체 생성을 처리하는 클래스를 팩토리(Factory)라고 부른다. 팩토리 메소드 패턴 팩토리 메소드 패턴(Factory Method Pattern)은 객체를 만들기 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 만들지는 서브 클래스들이 결정하도록 하는 방법이다. 즉, 클래스의 인스턴스를 만드는 일을 서브 클래스에게 맡긴다. 디자인 원칙애플리케이션에서 달라지는 부분을 식별하고 불변으로부터 그것들을 분리해라. (Identify the aspects of your application that vary and separate them from what stays the same.)달라지는 부분..
[Design Pattern] 데코레이터 패턴(Decorator Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다.3. 객체 꾸미기디자인 원칙애플리케이션에서 달라지는 부분을 식별하고 불변으로부터 그것들을 분리해라. (Identify the aspects of your application that vary and separate them from what stays the same.)달라지는 부분을 찾아서 나머지 코드에 영향을 주지 않도록 캡슐화(encapsulate)한다. 그러면 나중에 바뀌지 않는 부분에는 영향을 미치지 않고 그 부분만 고치거나 확장할 수 있다.구현이 아니라 인터페이스에 프로그래밍해라. (Program to an interface, not an implementation.)특정 행동만을 목적으로 하는 클래스의 집합을 만들고, 이 클래스..
[Design Pattern] 옵저버 패턴(Observer Pattern)
·
Computer Science/Design Pattern
"헤드 퍼스트 디자인 패턴(개정판)"을 읽고 정리한 내용입니다. 2. 객체들에게 연락 돌리기옵저버 패턴 옵저버 패턴(Observer Pattern)은 객체들 사이에서 일대다(one-to-many) 관계를 정의해서 하나의 객체의 상태가 변할 때 모든 의존성 있는 객체들에게 자동으로 통지하고 업데이트하는 패턴이다. 신문사(Publisher)와 구독자(Subscriber)로 이루어지는 신문 구독 서비스를 떠올리면 이해하기 쉽다. 디자인 원칙애플리케이션에서 달라지는 부분을 식별하고 불변으로부터 그것들을 분리해라. (Identify the aspects of your application that vary and separate them from what stays the same.)달라지는 부분을 찾아서 나머지..