반응형
1. 옵저버 패턴 정의 💡 옵저버 패턴 (observer pattern) 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다. 옵저버 패턴을 구현하는 방법에는 여러가지가 있지만 대부분 주제 (subject) 인터페이스와 옵저버 (observer) 인터페이스가 있는 클래스 디자인을 바탕으로 한다. 일대다(1:n) 관계는 주제와 옵저버에 의해 정의된다. 옵저버는 주제에 의존하며, 주제의 상태가 바뀌면 의존하는 옵저버에게 연락이 간다. ① subject : 상태를 저장하고 있는 주제 인터페이스를 구현한 하나의 주제객체 ② observer : 주제객체에 의존하고 있는 옵저버 인터페이스를 구현한 여러개의 옵저버객..
💡 싱글톤 패턴 (singleton pattern) 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기위한 패턴 클래스에서 자신의 단 하나뿐인 인스턴스를 관리하도록 만드는 것이다. 다른 어떤 클래스에서도 자신의 인스턴스를 추가로 만들지 못하도록 해야한다. ■ 고전적인 싱글톤 패턴 구현 public class Singleton { private static Singleton uniqueInstance; // 생성자 : 외부에서 생성하지 못하도록 private private Singleton(){} // 생성자 대신 생성할때 사용할 getInstance() 메소드 public static Singleton getInstance(){ if (uniqueInstance ..
1. 정의 💡 데코레이터 패턴 (decorator pattern) 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. 2. 예) 커피 주문 시스템 현재의 커피 시스템은 다음과 같이 되어 있다. Beverage 라는 슈퍼클래스가 존재하고, 이 클래스를 상속하여 Espresso, Decaf 등 각 음료 클래스가 있다. // Beverage 슈퍼 클래스 public abstract class Beverage { String description = "무슨 음료"; // getter public String getDescription() { return description; } /** 가격은 다르므로 각 클래스에서 결정*/ ..
1. 정의 💡 전략 패턴 , 스트래티지 패턴 (strategy pattern) 알고리즘군을 정의하고 각각 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지 패턴을 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. '행위(Behavioral) 패턴' 행위를 클래스로 캡슐화해 동적으로 (전략에 맞게) 행위를 자유롭게 바꿀 수 있게 해주는 패턴 전략(Strategy)을 쉽게 바꿀 수 있도록 해주는 패턴 여기서 전략이란? 어떤 목적을 달성하기 위해 일을 수행하는 방식. 비즈니스 규칙, 문제해결 알고리즘 등 2. [예제] 오리게임 어플리케이션 // 오리 슈퍼클래스 public abstract class Duck { public Duck() {} public void quac..
💡 템플릿 메소드 패턴 (template method pattern) 메소드에서 알고리즘의 골격을 정의한다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의할 수 있다. 예제) 커피와 티의 추출 과정 커피 추출 과정 티 추출 과정 1. 물을 끓인다. 2. 커피를 우려낸다. 3. 컵에 따른다. 4. 설탕 및 우유를 첨가한다. 1. 물을 끓인다. 2. 티를 우려낸다. 3. 컵에 따른다. 4. 레몬을 첨가한다 일련의 과정이 거의 동일하다. 차이가 있는 부분만 강조 표시 해보았다. 공통되는 부분을 추상화 (abstract) 시켜 클래스를 만들어 보자. // 추상클래스 (abstract) public a..