design pattern
-
[Design Pattern] 컴퍼지트 패턴(Composite Pattern)Software Engineering 2020. 6. 24. 21:24
구조 패턴 부분-전체의 관계를 갖는 객체들을 정의할 때 사용하는 패턴 전체와 부분을 구분하지 않고 동일한 인터페이스 사용 전체 클래스도 부분 클래스처럼 일반화되기 때문에 전체도 부분이 될 수 있음 트리 구조의 객체를 표현할 때 유용 역할이 수행하는 작업 Componenet 구체적인 부분 Leaf 클래스와 전체에 해당하는 Composite 클래스의 공통 인터페이스를 정의 Leaf 구체적인 부분 클래스로 Composite 객체의 부품 Composite 전체 클래스로 복수 개의 Component를 갖도록 정의 복수 개의 Leaf와 복수 개의 Composite 객체를 부분으로 가질 수 있음
-
[Design Pattern] 추상 팩토리 패턴(Abstract Factory Pattern)Software Engineering 2020. 6. 15. 10:53
생성 패턴 중의 하나 객체를 만들어내는 부분을 서브 클래스에 위임하는 패턴 객체의 생성 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성의 변화에 대비하는 데 유용 스트래티지 패턴, 싱글턴 패턴, 템플릿 메서드 패턴을 활용 사용법 1. 객체 생성을 전담하는 Factory 클래스 이용 객체를 생성하는 코드를 별도의 클래스/메서드로 분리 2. 상속을 이용하여 하위 클래스에서 적합한 클래스의 객체를 생성 객체 생성을 전담하는 별도의 클래스를 두는 대신 하위 클래스에서 적합한 클래스의 객체를 생성 역할이 수행하는 작업 Product 팩토리 메서드로 생성될 객체의 공통 인터페이스 ConcreteProduct 구체적으로 객체가 생성되는 클래스 Creator 팩토리 메서드를 갖는 클래스 ConcreteCreato..
-
[Design Pattern] 팩토리 메서드 패턴(Factory Method Pattern)Software Engineering 2020. 6. 9. 21:31
생성 패턴 중의 하나 객체를 만들어내는 부분을 서브 클래스에 위임하는 패턴 객체의 생성 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성의 변화에 대비하는 데 유용 스트래티지 패턴, 싱글턴 패턴, 템플릿 메서드 패턴을 활용 사용법 1. 객체 생성을 전담하는 Factory 클래스 이용 객체를 생성하는 코드를 별도의 클래스/메서드로 분리 2. 상속을 이용하여 하위 클래스에서 적합한 클래스의 객체를 생성 객체 생성을 전담하는 별도의 클래스를 두는 대신 하위 클래스에서 적합한 클래스의 객체를 생성 역할이 수행하는 작업 Product 팩토리 메서드로 생성될 객체의 공통 인터페이스 ConcreteProduct 구체적으로 객체가 생성되는 클래스 Creator 팩토리 메서드를 갖는 클래스 ConcreteCreato..
-
[Design Pattern] 템플릿 메서드 패턴(Template Method Pattern)Software Engineering 2020. 6. 8. 11:17
Template Method Pattern 행위 패턴 중에 하나 전체적인 알고리즘은 상위 클래스에서 구현하면서 다른 부분은 하위 클래스에서 구현할 수 있도록 하는 디자인 패턴 전체적인 알고리즘은 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화할 때 유용 상위 클래스의 메서드를 Template Method라고 부르고 하위 클래스에서 오버라이드될 메서드를 primitive 또는 hook 메서드라고 부름 역할이 수행하는 작업 AbstractClass 템플릿 메서드를 정의하는 클래스 하위 클래스에 공통 알고리즘을 정의하고 하위 클래스에서 구현될 기능을 primitive 혹은 hook 메서드로 정의하는 클래스 ConcreteClass 상속받은 primitive 혹은 hook 메서드를 구현..
-
[Design Pattern] 데커레이터 패턴(Decorator Pattern)Software Engineering 2020. 6. 7. 14:40
Decorator Pattern 구조 패턴 중에 하나 기본 기능에 추가할 수 있는 많은 종류의 부가 기능에서 파생되는 다양한 조합을 동적으로 구현할 수 있는 패턴 객체의 타입과 호출 가능한 메서드를 그대로 유지하면서 객체에 새로운 책임을 추가할 때 사용 역할이 수행하는 작업 Componenet 기본 기능을 뜻하는 ConcreteComponent와 추가 기능을 뜻하는 Decorator의 공통 기능을 정의 클라이언트는 Component를 통해 실제 객체를 사용 ConcreteComponent 기본 기능을 구현하는 클래스 Decorator 많은 수가 존재하는 구체적인 Decorator의 공통 기능을 제공 ConcreteDecorator Decorator의 하위 클래스로 기본 기능에 추가되는 개별적인 기능을 제..
-
[Design Pattern] 커맨드 패턴(Command Pattern)Software Engineering 2020. 6. 1. 17:07
Command Pattern 행위 패턴 이벤트가 발생했을 때 실행될 기능이 다양하면서도 변경이 필요한 경우에 이벤트를 발생시키는 클래스를 변경하지 않고 재사용할 수 있게하는 패턴 실행될 기능을 캡슐화하으로써 기능의 실행을 요구하는 호출자 클래스와 실제 기능을 실행하는 수신자 클래스 사이의 의존성을 제거 실행될 기능의 변경에도 호출자 클래스를 수정 없이 그대로 사용할 수 있도록 해줌 역할이 수행하는 작업 Command 실행될 기능에 대한 인터페이스 실행될 기능을 execute 메서드로 선언 ConcreteCommand 실제로 실행되는 기능을 구현(Command 인터페이스를 실체화) Invoker 기능의 실행을 요청하는 호출자 클래스 Receiver ConcreteCommand에서 execute 메서드를 구..
-
[Design Pattern] 스테이트 패턴(State Pattern)Software Engineering 2020. 5. 31. 19:59
State Pattern 행위 패턴 상태에 따라 동일한 작업이 다른 방식으로 실행될 때 해당 상태가 작업을 수행하도록 위임하는 패턴 시스템의 각 상태를 클래스로 분리하고 각 클래스에서 수행하는 행위들을 메서드로 구현 외부로부터 캡슐화하기 위해 인터페이스를 만들어 시스템의 각 상태를 나타내는 클래스로 실체화 역할이 수행하는 작업 State 시스템의 모든 상태에 공통의 인터페이스를 제공 인터페이스를 실체화한 상태 클래스는 기존 상태 클래스를 대신해 교체해서 사용 가능 ConcreteState Context 객체가 요청한 작업을 자신의 방식으로 실행 대부분의 경우 다음 상태를 결정해 상태 변경을 Context 객체에 요청하는 역할도 수행 Context State를 이용하는 역할을 수행 현재 시스템의 상태를 나..
-
[Design Pattern] 싱글턴 패턴(Singleton Pattern)Software Engineering 2020. 5. 29. 20:05
Singleton Pattern 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 객체를 만들어 사용하는 디자인 패턴 객체를 하나만 생성하고 그 객체를 어디에서든 참조할 수 있음 역할이 수행하는 작업 Singleton 하나의 인스턴스만을 생헝하는 책임이 있음 getInstance 메서드를 통해 모든 클라이언트에게 동일한 인스턴스를 반환하는 작업을 수행 사용하는 이유 객체 생성을 한번만 하기 때문에 재사용이 가능해 메모리 낭비를 방지할 수 있음 싱글톤으로 생성된 객체는 전역성을 띄기 때문에 다른 객체와 공유 가능 문제점 멀티 스레드 환경에서 동기화 문제인 경합조건 발생 경합조건 메모리와 같은 동일한 자원을 2개 이상의 스레드가 이용하려고 경합하는 현상 싱글톤 인스턴스의 역할이 많거나 ..