반응형
💡 싱글톤 패턴 (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..