Design Pattern7 [Design Pattern] 어댑터 패턴(Adapter Pattern) 어댑터 패턴 어댑터는 변환기를 의미합니다. 변환기의 역할은 서로 다른 두 인터페이스가 통신할 수 있도록 하는 것입니다. 현실에서 변환기의 예를 들자면 핸드폰 충전기가 있습니다. 핸드폰을 직접 콘센트 전원에 끼워 연결할 수 없으니 핸드폰 충전기가 핸드폰과 콘센트 사이에서 둘을 연결해주는 변환기 역할을 합니다. 자바의 JDBC(Java Database Connectivity) 도 어댑터 패턴을 이용하는데요. 자바와 다양한 데이터베이스 시스템을 하나의 인터페이스로 연동해서 조작할 수 있게 해줍니다. 예제 코드를 살펴보겠습니다. public class ServiceA { void runServiceA() { System.out.println("ServiceA"); } } public class ServiceB .. 2022. 10. 21. [Design Pattern] 싱글톤 패턴(Singleton Pattern) 싱글톤 패턴 싱글톤 패턴은 인스턴스를 하나만 만들어 재사용하기 위한 패턴입니다. 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이므로 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 합니다. 이를 구현하려면 객체 생성을 위한 new 에 제약을 걸어야 하고, 만들어진 단일 객체를 반환할 수 있는 메서드가 필요합니다. 따라서 싱글톤 패턴에는 다음 3가지가 반드시 필요합니다. 1. new 를 실행해서 객체를 생성할 수 없도록 생성자에 private 접근 제어자를 지정합니다. 2. 유일한 단일 객체를 번한할 수 있는 정적 메서드가 필요합니다. 3. 유일한 단일 객체를 참조할 정적 참조 변수가 필요합니다. 코드로 알아보겠습니다. public class Singleton { static Sin.. 2022. 10. 5. [Design Pattern] 데코레이터 패턴(Decorator Pattern) 이전 포스팅인 프록시 패턴에서 프록시 패턴과 데코레이터 패턴 둘 다 프록시를 사용하지만 의도에 따라서 구분할 수 있다고 설명했습니다. 프록시 패턴: 접근 제어가 목적 데코레이터 패턴: 새로운 기능 추가가 목적 데코레이터 패턴은 원본에 장식을 더하는 패턴이며 프록시 패턴과 구현 방법이 같습니다. 다만 프록시 패턴은 클라이언트가 최종적으로 돌려 받는 반환 값을 조작하지 않고 그대로 전달하는 반면 데코레이터 패턴은 클라이언트가 받는 반환값에 장식을 덧붙입니다. 예제를 살펴보겠습니다. public interface IService { public abstract String runSomething(); } public class Decorator implements IService { IService servi.. 2022. 10. 3. [Design Pattern] 프록시 패턴(Proxy Pattern) 클라이언트( Client )와 서버( Server )라고 하면 개발자들은 보통 서버 컴퓨터를 생각합니다. 사실 클라이언트와 서버의 개념은 상당히 넓게 사용됩니다. 클라이언트는 의뢰인이라는 뜻이고, 서버는 '서비스나 상품을 제공하는 사람이나 물건'을 뜻합니다. 따라서 클라이언트와 서버의 기본 개념을 정의하면 클라이언트는 서버에 필요한 것을 요청하고, 서버는 클라이언트의 요청을 처리하는 것입니다. 이 개념을 객체에 도입하면, 요청하는 객체는 클라이언트가 되고, 요청을 처리하는 객체는 서버가 됩니다. 클라이언트와 서버 개념에서 일반적으로 클라이언트가 서버를 직접 호출하고, 처리 결과를 직접 받습니다. 이것을 직접 호출이라고 합니다. 그런데 클라이언트가 요청한 결과를 서버에 직접 요청하는 것이 아니라 어떤 대리.. 2022. 10. 3. 이전 1 2 다음