디자인패턴

Singleton 패턴 💡 인스턴스가 하나만 존재하는 것을 보증하는 패턴 등장인물 Singleton 유일한 인스턴스를 얻기 위한 `static` 메소드를 가짐 → 항상 같은 인스턴스를 반환 public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() { System.out.println("인스턴스 생성") } public stgatic Singleton getInstance() { return singletone; } } Singleton 클래스 로드할 때 초기화 진행 `private` 생성자 : 외부에서 생성자 호출을 금지하기 위함 `getInstance()`: 유일한 인스턴스를 얻는 메..
Factory Method Factory Method 패턴 💡 인스턴스를 생성하는 공장은 Template Method 패턴으로 구성한 것 인스턴스의 생성 방법을 상위 클래스에서 결정하되, 구체적인 클래스 이름까지 결정하지 않음 구체적인 살은 모두 하위 클래스에서 결정! ⇒ 인스턴스 생성을 위한 프레임워크와 실제 인스턴스를 생성하는 클래스를 나눌 수 있음 등장인물 Product (제품) 프레임워크 package 생성되는 인스턴스가 가져야 할 인터페이스(API)를 결정하는 추상 클래스 구체적인 내용은 하위 클래스 `ConcreteProduct` 에서 결정 package framework; public abstract class Product { public abstract void use(); } Creat..
Template Method 패턴 💡 상위 클래스에서 처리의 뼈대를 결정하고 하위 클래스에서 구체적인 내용을 결정 등장인물 `AbstractClass` (추상 클래스) 템플릿 메소드를 구현하며, 템플릿 메소드에서 사용할 추상 메소드를 선언 추상 메소드는 하위 클래스인 `ConcreteClass` 에서 구현 public abstract class AbstractDisplay { // 하위 클래스에 구현을 맡기는 추상 메소드 public abstract void open(); public abstract void print(); public abstract void close(); // AbstractDisplay에서 구현하는 메소드 -> 템플릿 메소드 public final void display() { ..
Adapter 💡 ‘이미 제공된 것’과 ‘필요한 것’ 사이의 ‘차이’를 메우는 디자인 패턴 Wrapper 패턴이라고도 불림 [예제] 상속을 사용한 패턴 클래스에 의한 Adapter 패턴 Banner 클래스 미리 제공되는 클래스 public class Banner { private String string; public Banner(String string) { this.string = string; } public void showWithParen() { System.out.println("(" + string + ")"); } public void showWithAster() { System.out.println("*" + string + "*"); } } Print 인터페이스 필요로 하는 인터페이스 ..
점이
'디자인패턴' 태그의 글 목록