Computer Science/Design Pattern
-
[디자인 패턴] 13. 추상 팩토리 패턴 (Abstract Factory Design Pattern)Computer Science/Design Pattern 2022. 12. 20. 02:20
학습목표 관련된 여러 클래스의 객체를 생성하는 코드의 캡슐화 방법 추상 팩토리 패턴 이용 관련 객체의 생성 방법 이해 추상 팩토리 패턴 (Abstract Factory Pattern) 관련성이 있는 여러 종류의 객체들을 일관된 방식으로 생성할 때 유용한 패턴이다. 클라이언트는 캡슐화된 추상 팩토리를 접근하여 Product가 변경되더라도 클라이언트는 알 수 없다. 팩토리 메서드 패턴 vs 추상 팩토리 패턴 팩토리 메서드 패턴 조건에 따른 객체 생성을 팩토리 클래스로 위임하여, 팩토리 클래스에서 객체를 생성하는 패턴 추상 팩토리 패턴 서로 관련이 있는 객체들을 통째로 묶어서 팩토리 클래스로 만들고, 이들 팩토리를 조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴 추상 팩토리 패턴은 팩토리 ..
-
[디자인 패턴] 12. 팩토리 메서드 패턴 (Factory Method Design Pattern)Computer Science/Design Pattern 2022. 12. 20. 01:06
학습목표 : 1) 적합한 클래스의 객체를 생성하는 코드의 캡슐화 방법 이해, 2) 팩토리 메서드 패턴 이용 객체 생성 방법 이해 팩토리 메서드 패턴 (Factory Method Pattern) 객체의 생성 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성 방식의 변화를 대비하는데 유용한 패턴이다. 즉, 조건에 따른 객체 생성을 팩토리 클래스로 위임하여, 팩토리 클래스에서 객체를 생성하는 패턴이다. 조건에 따라 동적으로 객체가 선택되어 생성하는 경우, 코드의 빈번한 수정이 발생하게 된다. 이에 팩토리 메서드 패턴을 이용하여 객체를 생성하는 부분을 캡슐화한다. 팩토리 메서드 패턴 실습 new : 구상 클래스의 instance가 만들어짐 구상 클래스에서 여러 new 연산자 사용하여 instance 여러 개..
-
[디자인 패턴] 11. 템플릿 메서드 패턴 (Template Method Design Pattern)Computer Science/Design Pattern 2022. 11. 25. 02:45
학습목표 : 1) 공통 코드의 재사용 방법 이해, 2) 템플릿 메서드 패턴을 이용한 코드 재사용 방법 이해 템플릿 메서드 패턴 (Template Method Pattern) 전체적으로 동일하면서 부분적으로 다른 문장을 가지는 메서드의 코드 중복을 최소화할 때 유용한 패턴이다. 동일한 기능을 상위 클래스에서 정의하면서 확장/변화가 필요한 부분만 서브 클래스에서 구현할 수 있도록 한다. 즉, 전체적인 알고리즘 코드를 재사용하는 데 유용한 패턴이다. AbstractClass : 템플릿 메서드를 정의하는 클래스 하위 클래스에서 공통 알고리즘을 정의하고, 하위 클래스에서 구현될 기능을 primitive 또는 hook 메서드로 정의하는 클래스다. ConcreteClass : 물려받은 primitive 또는 hook..
-
[디자인 패턴] 10. 데커레이터 패턴 (Decorator Design Pattern)Computer Science/Design Pattern 2022. 11. 11. 01:03
학습목표 : 1) 독립적인 추가, 기능의 조합 방법 이해하기 2) 데커레이터 패턴을 통한 기능의 조합 방법 이해 데커레이터 패턴 (Decorator Pattern) 기본 기능에 추가될 수 있는 많은 수의 부가 기능에 대해서 각 추가 기능을 Decorator 클래스로 정의한다. 이후 필요한 Decorator 객체들을 조합함으로써 다양한 추가 기능의 조합을 동적으로 구현할 수 있는 패턴이다. 예를 들어 스타벅스에서, 기본 커피 메뉴에서 추가로 휘핑크림, 모카, 우유 등의 Decorator 옵션을 추가할 수 있다. 여기서 모든 추가 Decorator 옵션들의 모든 경우의 조합을 각각 클래스로서 구현하는 것이 아닌, 데커레이터 패턴을 이용해서 동적으로 기능을 조합해 객체를 만들 수 있다. Component 기본..
-
[디자인 패턴] 9. 옵저버 패턴 (Observer Design Pattern)Computer Science/Design Pattern 2022. 11. 10. 22:14
학습목표 : 1) 데이터 변화를 통보하는 방법 이해. 2) 옵서버 패턴을 통한 통보의 캡슐화 방법 이해 옵서버 패턴 (Observer Pattern) 어떤 객체의 상태가 변할 때 그와 연관된 객체(Observer) 들에게 알림을 보내는 디자인 패턴 데이터의 변경이 발생했을 경우 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 유용 Subject ConcreteObserver 객체를 관리하는 요소 Observer 인터페이스를 참조하여 ConcreteObserver를 관리하므로 각 ConcreteSubject의 변화에 독립적이다. Observer 데이터의 변경을 통보받는 인터페이스 Subject에서는 Observer 인터페이스의 update() 메소드를 호출함으로 ConcreteSub..
-
[디자인패턴] 8. 커맨드 패턴 (Command Design Pattern)Computer Science/Design Pattern 2022. 10. 31. 01:04
커맨드 패턴 (Command Pattern) 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴 이벤트가 발생했을 때 실행될 기능이 다양하면서도 변경이 필요한 경우에 이벤트를 발생시키는 클래스를 변경없이 재사용하고자 할 때 유용 커맨드 패턴은 실행될 기능을 캡슐화함으로써 기능의 실행을 요구하는 호출자 클래스 (Invoker)와 실제 기능을 실행하는 수신자 클래스 (Receiver) 사이의 의존성을 제거. 따라서 실행될 기능(Invoker)의 변경에도 호출자 클래스를 수정없이 그대로 사용가능하게 한다. Invoker 기능의 실행을 요청하는 호출자 클래스 Command 실행될 기능에 대한 인터페이스 실행될 기능을 execute 메서드로 선언함 Concret..
-
[디자인 패턴] 7. 스테이트 패턴 (State Design Pattern)Computer Science/Design Pattern 2022. 10. 14. 02:09
스테이트 패턴 (State Pattern) 객체가 상태에 따라 행위를 다르게 할 때, 직접 상태를 체크하여 상태에 따른 행위를 호출하는 것이 아닌, 상태를 객체화하여 필요에 따라 다르게 행동하도록 위임하는 디자인 패턴 객체의 특정 상태 = 클래스 : 객체가 시스템에 존재하는 동안 (객체 라이프타임) 객체가 가질 수 있는 조건이나 상황 상태에 따른 행위 (Action) = 클래스 내 메서드 상태 클래스를 인터페이스로 캡슐화 상태 머신 다이어그램 선풍기 예시 Event (parameter조건) / Action() : 이벤트 조건 만족 시, Action() 메소드 실행 선풍기는 기본적으로 OFF 상태 OFF 상태에서 사용자가 스위치 켜면 switch_on 이벤트 발생. 전원 들어온 상태라면 power_exis..
-
[디자인 패턴] 빌더 패턴 (Builder Design Pattern)Computer Science/Design Pattern 2022. 10. 9. 01:47
빌더 패턴 (Builder Pattern) GoF 디자인 패턴 중 생성 패턴에 해당 빌더 패턴은 복잡한 객체를 생성하는 클래스와 표현하는 클래스를 분리 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴 주로 클래스에 새로운 객체 생성 시, 객체에 값을 할당하는 방법 1. 생성자 이용 2. Setter 메서드 이용 빌더 패턴이 필요한 경우 클래스에 대한 속성 값이 optional 일때 클래스 객체의 여러 속성 값 중 하나 null이 되는 경우 데이터 입력하는 순서가 달라질 수 있을 때 새로운 객체를 만들 때마다 객체 내부 인자를 어떻게 부여해서 생성해야 하는지 모르는 경우 발생 * 기존 클래스 생성자를 이용한 객체 생성 시 명확하게 데이터 입력하는 순서를 알아야 하는 문제점 발생 장점 표현..