객체지향 14

[Design Pattern] Chapter 04 팩토리 패턴

팩토리 메소드 패턴의 정의 팩토리 메소드 패턴(Factory Method Pattern)에서는 객체를 생성할 때 필요한 인터페이스를 만든다. 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정한다. 팩토리 메소드 패턴을 사용하면 클래스 인스턴스 만드는 일을 서브클래스에게 맡기게 된다. 팩토리 메소드 패턴 UML 추상 클래스의 추상 팩토리 메소드를 서브클래스가 팩토리 메소드를 구현해서 객체를 생산한다. 팩토리 메소드 패턴 예제 코드 public abstract class Pizza { String name; Dough dough; Sauce sauce; Veggies veggies[]; Cheese cheese; Pepperoni pepperoni; Clams clams; public abstract v..

[Design Pattern] Chapter 03 데코레이터 패턴

OCP 살펴보기 디자인 원칙 5: OCP(Open-Closed Principle) 클래스는 확장에는 열려 있어야 하지만, 변경에는 닫혀 있어야 한다. 데코레이터 패턴의 정의 데코레이터 패턴(Decorator Pattern)으로 객체에 추가 요소를 동적으로 더할 수 있다. 데코레이터를 사용하면 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있다. 데코레이터 패턴 UML 데코레이터 추상 클래스는 장식할 Component(구성 요소) 인스턴스 변수를 가지고 있으면서, 자신이 장식할 구성 요소와 같은 인터페이스/추상 글래스를 구현한다. 데코레이터 패턴 예제 코드 public abstract class Beverage { String description = "제목 없음"; public String g..

[Design Pattern] Chapter 02 옵저버 패턴

옵저버 패턴의 정의 옵저버 패턴(Observer Pattern)은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다. 주체 (One, 상태를 저장하고 있는 객체) : 옵저버 (Many, 주체에 딸린 객체) 옵저버 패턴 UML 주제 인터페이스와 옵저버 인터페이스를 두고, 이를 구상 클래스가 구현한다. 주제 구상 클래스의 경우 옵저버 등록 및 삭제, 그리고 상태가 바뀔 때마다 모든 옵저버에게 연락하는 메소드를 구현한다, 그리고 옵저버 구상 클래스의 경우 업데이트를 통해 주제의 정보를 받을 수 있다. 주체 인터페이스를 구현한 주제 구상 클래스는 옵저버 인터페이스를 구현한 옵저버 구상 클래스들의 정보를 가지고..

[Design Pattern] Chapter 01 디자인 패턴 소개와 전략 패턴

객체지향 기초 객체지향의 핵심 기초 4가지를 통해 디자인 패턴이 구현된다. 추상화(Abstraction): 공통의 속성이나 기능을 묶어 이름을 붙이는 것 상속(Inheritance): 상위 개념의 특징을 하위 개념이 물려받는 것 다형성(Polymorphism): 하나의 변수, 함수가 상황에 따라 다른 의미로 해석할 수 있는 것 캡슐화(Encapsulation): 데이터 구조와 데이터를 다루는 방법들을 결합 시켜 묶는 것 객체지향 원칙 디자인 원칙 1: 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리한다. 디자인 원칙 2: 구현보다는 인터페이스에 맞춰서 프로그래밍한다. 디자인 원칙 3: 상속보다는 구성(composition)을 활용한다. 첫번째 디자인 패턴: 전략 패턴 전략 패턴(St..