Proxy 패턴
·
디자인패턴
객체에 접근할 때 그 접근을 제어하기 위해 대리인 역할을 하는 객체를 제공하는 디자인 패턴 Proxy 패턴은 실제 객체에 대한 대리자 역할을 하여, 이를 통해 추가적인 기능(보안, 캐싱, 데이터 유효성 검사, 지연초기화, 로깅 등)을 제공한다.객체의 구조를 변경하지 않고도 기능을 추가하거나 수정할 수 있다.그냥 객체를 이용하지않고, 대리자를 이용하는 이유는?대상 클래스가 민감한 정보를 가지고 있거나, 인스턴스화 하기에 무겁거나 추가 기능을 가미하고 싶지만, 원복 객체를 수정할 수 없는 상황일때를 극복하기 위해서이다.등장인물1. Subject(본인) 역실제 객체와 프록시 객체가 구현해야 할 공통 인터페이스를 정의public interface Printable { void setPrinterName(S..
Strategy 패턴
·
디자인패턴
알고리즘을 캡슐화하여 필요에 따라 런타임에 알고리즘을 독립적으로 변경할 수 있도록 하는 전략 동일한 문제를 해결하기 위해 여러 알고리즘 중 하나를 선택해야 하는 상황에서 유용코드의 유연성과 재사용성을 높인다.등장인물Strategy(전략)역전략을 이용하기 위한 인터페이스를 결정한다.공통된 알고리즘을 캡슐화한 인터페이스로 모든 전략은 이 인터페이스를 구현한특정 작업을 수행하는 메서드를 정의interface SortingStrategy { void sort(int[] array);}ConcreateStrategy(구체적인 전략) 역`Strategy`역의 인터페이스를 실제로 구현한다.구체적인 전략(작전, 방한, 방법, 알고리즘 등)을 실제로 프로그래밍한다.class BubbleSortStrategy imp..
Template Method 패턴
·
디자인패턴
상위클래스에서 처리의 뼈대를 결정하고 하위 클래스에서 그 알고리즘의 구체적 내용을 결정하는 전략추상클래스를 상속으로 완성시킨다.알고리즘의 전체구조를 변경하지 않고 세부 단계를 구현하여, 재사용성과 확상성을 높인다.(OCP)등장인물AbstractClass(추상 클래스)역템플릿 메소드를 구현하며, 그 템플릿 메소드에서 사용할 추상 메소드를 선언한다.이 추상 메소드는 `ConcreateClass`에서 구현되며, 이를 `final`로 선언하여 서브클래스에서 변경할 수 없도록한다.(오버라이딩 불가)public abstract class AbstractDisplay { // open, print, close는 하위 클래스에 구현을 맡기는 추상 클래스 public abstract void open(); ..
Singleton 패턴
·
디자인패턴
인스턴스가 단 하나만 존재한다.Singleton 패턴은 클래스의 인스턴스를 하나만 생성하여, 모든 클라이언트가 동일한 인스턴스를 공유한다.공통된 리소스를 관리하거나 전역 상태를 유지하는 상황에서 유리하다.등장인물Singleton 역Singleton 역은 유일한 인스턴스를 얻기 위한 static 메소드만 가지고 있다.이 메소드는 항상 같은 인스턴스를 반환한다.public class Singleton { private static Singleton singleton = new Singleton(); private Singleton(){ System.out.println("인스턴스를 생성했습니다."); } public static Singleton getInstance..
5jeong
'디자인패턴' 카테고리의 글 목록