본문 바로가기

디자인패턴7

[디자인 패턴] 추상 팩토리(Abstract Factory) 패턴 Goal 추상 팩토리 패턴을 이해한다. 추상 팩토리(Abstract Factory) 패턴 관련성 있고 서로 의존적인 여러 종류의 객체를 일관성 있는 방식으로 생성할 때 유용한 패턴 AbstractFactory : 실제 팩토리 클래스의 공통 인터페이스, 각 제품의 부품을 생성하는 기능을 추상 메서드로 정의 ConcreteFactory : 구제적인 팩토리 클래스로 AbstractFactory 클래스의 추상 메서드를 오버라이드함으로써 구체적인 제품을 생성 AbstractProduct : 제품의 공통 인터페이스 ConcreteProduct : 구체적인 팩토리 클래스에서 생성되는 구체적인 제품 ※ 팩토리 메서드 패턴과 추상 팩토리 패턴은 엄연히 다르다. 팩토리 메서드 패턴은 객체를 생성하는 코드를 별도의 클래스/.. 2021. 6. 3.
[디자인 패턴] 템플릿(Template) 메서드 패턴 Goal 템플릿(Template) 메서드 패턴을 이해한다. 템플릿(Template) 메서드 패턴 전체적인 알고리즘은 상위 클래스에서 구현하면서 다른 부분은 하위 클래스에서 구현할 수 있도록 하는 디자인 패턴 템플릿 메서드 패턴은 전체적으로 동일하면서 부분적으로는 다른 구문으로 구성된 메서드의 코드 중복을 최소화할 때 유용하다. 동일한 기능을 상위 클래스에 정의하면서 확장/변화가 필요한 부분만 서브 클래스에서 구현할 수 있다. 하위 클래스에 오버라이드될 필요가 있는 PrimitiveOperation 메서드를 primitive 또는 hook 메서드라고 부른다. AbstractClass : 템플릿 메서드를 정의하는 클래스. 하위 클래스에 공통 알고리즘을 정의하고 하위 클래스에서 구현될 기능을 primitive.. 2021. 5. 25.
[디자인 패턴] 커맨드(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.