본문 바로가기

디자인 패턴6

프록시 패턴(Proxy Pattern) 프록시는 대리인이라는 뜻으로 프록시 패턴은 클라이언트가 객체를 직접 참조하는 것이 아니라 proxy(대리인)를 통해 객체에 접근하는 패턴입니다. 구조와 글만 보면 이해하기 어려우니 예제를 통해 자세히 알아보겠습니다. public class Company { public void enter() { System.out.println("들어 가기"); } }해당 코드에서 만약 직원들만 회사에 들어갈 수 있다는 조건이 추가된다면 코드가 어떻게 수정될까요? public class Company { public void enter(String status) { if ("employee".equals(status) { System.out.println("들어 가기"); } } }if문을 추가해서 직원일 경우에만 들어.. 2022. 3. 7.
브릿지 패턴(Bridge Pattern) 구조 패턴 중 하나인 브릿지 패턴은 추상적인 것(기능)과 구체적인 것(구현)을 분리하여 연결하는 패턴입니다. 구조와 글만 보면 이해하기 어려우니 예제를 통해 자세히 알아보겠습니다. 먼저 카드 결제라는 새로운 기능을 추가하는 요구사항이 생겼습니다. 현재는 FirstBank라는 카드사의 카드만으로 결제가 가능한 상태입니다. 코드를 완성하고 배포를 해서 카드 결제를 잘 사용하고 있었습니다. 서비스가 성공해서 다른 bank의 카드도 결제할 수 있도록 수정해달라는 요구사항이 생겼습니다. public void pay(int index) { if (index == 1) { System.out.println("first bank 카드 결제"); } else if (index == 2) { System.out.print.. 2022. 1. 29.
팩토리 메소드 패턴(Factory method pattern) 안녕하세요 이번에는 디자인 패턴 중 하나인 [팩토리 메소드 패턴(Factory method pattern)]에 대해 알아보겠습니다. 팩토리 메소드 패턴은 객체를 생성하기 위해 인터페이스/추상클래스를 정의하지만, 실제로 어떤 클래스의 인스턴스를 생성할지 결정하는 것은 서브 클래스에게 맡기는 패턴입니다. 팩토리 메소드 패턴에 클래스 다이어그램은 다음과 같습니다. 팩토리 메소드 패턴은 Creator 클래스가 사용하는 Product타입의 인스턴스를 Creator의 서브 클래스에서 생성합니다. Cretor 클래스에서는 자신이 사용하는 Product의 구체적인 클래스를 알지도 못하고 알 필요도 없습니다. Product 인터페이스로 기능을 구현하기 때문에 확장성에도 유리합니다. 이제 코드를 보면서 팩토리 메소드 패턴.. 2021. 1. 21.
싱글톤 패턴(Singleton pattern) 안녕하세요~ 이번에는 디자인 패턴 중 하나인 [싱글톤 패턴(Singleton pattern)]에 대해 알아보겠습니다. 싱글톤 패턴(Singleton Pattern) 이란 ? 싱글톤 패턴은 인스턴스가 오직 1개만 생성되어야 할 때 사용되는 패턴입니다. 애플리케이션이 시작될 때 어떤 클래스가 최초 한 번만 메모리를 할당하고 그 메모리에 인스턴스를 생성합니다. 싱글톤을 쓰는 이유 싱글톤 패턴을 사용하면 하나의 인스턴스를 할당할 메모리 공간만 가지기 때문에 메모리 낭비를 방지할 수 있고 효율적입니다. 또한 전역 인스턴스이기 때문에 다른 클래스의 인스턴스들이 데이터를 공유하기 쉽습니다. 싱글톤의 문제점 싱글톤 인스턴스의 책임이 많아지거나 많은 데이터를 공유할 경우 다른 클래스 인스턴스들과 결합도가 높아져 OCP(.. 2021. 1. 11.