본문 바로가기

전체 글26

[디자인 패턴] 템플릿(Template) 메서드 패턴 Goal 템플릿(Template) 메서드 패턴을 이해한다. 템플릿(Template) 메서드 패턴 전체적인 알고리즘은 상위 클래스에서 구현하면서 다른 부분은 하위 클래스에서 구현할 수 있도록 하는 디자인 패턴 템플릿 메서드 패턴은 전체적으로 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화할 때 유용하다. 동일한 기능을 상위 클래스에 정의하면서 확장/변화가 필요한 부분만 서브 클래스에서 구현할 수 있다. 하위 클래스에 오버라이드될 필요가 있는 PrimitiveOperation 메서드를 primitive 또는 hook 메서드라고 부른다. AbstractClass : 템플릿 메서드를 정의하는 클래스. 하위 클래스에 공통 알고리즘을 정의하고 하위 클래스에서 구현될 기능을 primitive.. 2021. 5. 25.
[디자인 패턴] 데코레이터(Decorator) 패턴 Goal 데코레이터 패턴을 이해한다. 데코레이터(Decorator) 패턴 데코레이터 패턴은 기본 기능에 추가할 수 있는 많은 종류의 부가 기능에서 파생되는 다양한 조합을 동적으로 구현할 수 있는 패턴 Component 클래스에는 기본적인 기능을 뜻하는 ConcreteComponet와 추가 기능에 뜻하는 Decorator의 공통 기능에 대해서 정의한다. ConcreteComponet 클래스에서는 기본적인 기능에 대해서 구체적으로 구현한다. Decorator 클래스에서는 기본적인 기능 외에 추가적인 기능에 대해서 구현한다. ConcreteDecorator 클래스에서는 많은 수가 존재하는 구체적인 Decorator의 공통 기능을 제공한다. ConcreteDecorator 클래스에서 추가되는 개별적인 기능을 구.. 2021. 5. 23.
[디자인 패턴] 커맨드(Command) 패턴 Goal 커맨드 패턴을 이해한다. 커맨드(Command) 패턴 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 취소할 수 있게 하는 패턴 커맨드 패턴은 실행될 기능을 캡슐화함으로써 기능의 실행을 요구하는 호출자(Invoker)와 실제 기능을 실행하는 수신자(Receiver) 사이의 의존성을 제거한다. 이벤트가 발생하였을 때 실행될 기능이 다양하면서도 변경이 필요할 때 이벤트를 발생하는 클래스를 수정하지 않고 재사용할 때 유용하다. Example 램프의 불이 켜지는 프로그램을 구현해보자. 램프에 불이 켜지는 프로그램을 개발하려면 버튼을 눌려졌음을 인식하는 Button 클래스와 불을 켜는 기능을 제공하는 Lamp 클래스.. 2021. 5. 20.
[디자인 패턴] 스테이트(State) 패턴 Goal 스테이트(State) 패턴을 이해한다. 스테이트(State) 패턴 어떤 행위를 수행할 때 상태에 행위를 수행하도록 위임하는 패턴 스테이트 패턴을 설명하기 위해서 형광등 상태 다이어그램을 구현해보자. 형광등에도 다양한 기능(취침등...)이 있을 수 있지만 현 상태 머신 다이어그램에는 On, Off 구현하였다. 다이어그램에서 둥근 사각형은 상태(State)를 의미하고 화살표는 상태 전이(State Transitiion)를 의미하며 검은색 원 화살표는 시작 상태를 의미한다. ※상태(State) - 상태란 객체가 시스템에 존재하는동안, 즉 객체의 라이프 타임 동안 객체가 가질 수 있는 어떤 조건이나 상황을 표현한다. [액티비티(Activity)나 이벤트(Event)] 크게 2가지의 상태를 생각할 수 있.. 2021. 5. 17.