2019/05
메모. Factory method pattern
메모. Factory method pattern
2019.05.19Factory method pattern은 객체를 생성하기 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 subclass가 내리도록 한다. 이 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 subclass에게 맡길 수 있다. 구조UML 클래스 다이어그램 Product: Factory method가 생성하는 객체의 인터페이스를 정의한다.ConcreteProduct: Product 클래스에 정의된 인터페이스를 실제로 구현한다.Creator: Product 타입의 객체를 반환하는 Factory method를 선언한다. Creator 클래스는 Factory method를 기본적으로 구현하는데, 이 구현에서는 ConcreteProduct 객체를 반환한다. 또한 Product 객체..
메모. Builder pattern
메모. Builder pattern
2019.05.18Builder pattern을 사용하면 제품을 여러 단계로 나눠서 만들 수 있도록 제품 생산 단계들을 캡슐화 할 수 있다. 구조 UML 클래스 다이어그램 Builder: client에서는 추상 인터페이스를 통해서 Product 객체의 일부 요소들을 생성한다. ConcreteBuilder: Builder 클래스에 정의된 인터페이스를 구현하며, 제품의 부품들을 모아 빌더를 복합한다. 특정 종류의 제품을 생성하고 조립하는 데 필요한 모든 코드가 들어간다.Director: Builder 인터페이스를 사용하는 객체를 합성한다.Product: 생성할 복합 객체를 표현한다. 장단점제품에 대한 내부 표현을 다양하게 변화시킬 수 있다. 생성과 표현에 필요한 코드를 분리한다. Builder pattern을 사용하면, 복합..
메모. Concrete class
메모. Concrete class
2019.05.13객체지향 관련 서적을 보다 보면 원서에는 concrete class라고 되어있는 것이, 번역서에는 '구상 클래스', '구현 클래스' 또는 '구체 클래스'라고 번역되어 있다. 이 이름을 보고 나서 이게 구체적으로 어떤 클래스를 의미하는 것인지 크게 와닿지 않았다. 좀 더 자세히 살펴보면, 우리가 이미 알고 있듯이 정의한 모든 연산(operation)이나 일부 연산의 구현을 서브클래스로 넘기는 추상 클래스(abstract class)나 객체의 연산에 대한 구현이 포함되어 있지 않고 정의만 존재하는 인터페이스를 통해 인스턴스를 만들 수 없다. 당연하게도 완성되지 않은 설계도를 가지고 제품을 만들 수는 없기 때문이다. 그럼, 모든 연산에 대한 구현을 가지고 있는 클래스를 뭐라고 할까? 바로 concrete cl..
메모. Abstract factory pattern
메모. Abstract factory pattern
2019.05.13Abstract factory pattern을 이용하면 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 concrete class를 지정하지 않고도 생성할 수 있다. abstract factory를 바탕으로 똑같은 제품을 다른 방식으로 구현하는 서로 다른 concrete factory를 만들어낼 수 있다. 구조 UML 클래스 다이어그램 AbstractFactory: 모든 concrete factory는 이를 구현해야 한다. 제품을 생산하기 위한 일련의 메서드들이 정의되어 있다.ConcreteFactory: 서로 다른 제품군(product family)을 구현한다. client에서 제품이 필요하면 이 factory 가운데 적당한 걸 골라서 쓰면 되기 때문에 제품 객체의 인스턴스를 직접 만들 필요가..