전체 글
-
[객체지향의 원리와 이해] 데코레이터 패턴 (Decorator Pattern)개발/OOP, Design Pattern 2021. 1. 2. 16:07
데코레이터 패턴 메서드 호출의 반환값에 변화를 주기 위해 중간에 장식자를 두는 패턴 참고 : https://johngrib.github.io/wiki/decorator-pattern/ 원본에 장식을 더하는 패턴이다. 프록시와 구현 방법이 같다. 데코레이터 패턴은 클라이언트가 받는 값에 장식을 더하는 것이 목적이다. 프록시의 패턴의 목적은 제어의 흐름을 변경하거나 별도의 로직 처리이다. 그리고 반환값을 변경하지 않는다. 중요 포인트 장식자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 인터페이스를 사용한다. 장식자는 실제 서비스에 대한 참조 변수를 갖는다.(합성) 장식자는 실제 서비스의 같은이름을 가진 메서드를 호출하고, 그 반환값에 장식을 더해 클라이언트에게 돌려준다. 장식자는 실제 서비스의 메서..
-
[객체지향의 원리와 이해] 싱글턴 패턴 (Singleton Pattern)개발/OOP, Design Pattern 2021. 1. 2. 16:03
싱글턴 패턴 클래스의 인스턴스, 즉 객체를 하나만 만들어 사용하는 패턴 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같은 인스턴스를 여러개 만들면 불필요한 자원을 사용하게 되고, 프로그램에 예상치 못한 결과를 초래하기도 한다. 그래서 이런 경우 하나의 인스턴스만을 만들고 계속 재사용하는 싱글턴 패턴을 사용한다. 중요 포인트 new를 실행할 수 없도록 생성자에 private 접근제한자를 지정한다. 유일한 단일 객체를 반환할 수 있는 정적 메소드가 필요하다. 유일한 단일 객체를 참조할 수 있는 정적 참조 변수가 필요하다. 예제 public class Singleton { static Singleton singletonObject; // 정적 참조 변수 private Singleton() {} // pr..
-
[객체지향의 원리와 이해] 프록시 패턴 (proxy pattern)개발/OOP, Design Pattern 2021. 1. 2. 01:48
프록시 패턴 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴 실제 서비스 객체가 가진 메소드를 직접 실행하지 않고, 대리자 객체를 대신 투입해 실행하는 패턴이다. 클라이언트 쪽에서는 실제 서비스를 통해 실행하는지, 대리자 객체를 통해 실행하는지 알 수 없다. 대리자를 둠으로써 실제 서비스의 메소드 호출 전후로 별도 로직을 수행하는 방식으로 제어 흐름이 가능하다. 개방 폐쇄 원칙(OCP)와 의존 역전 원칙(DIP)를 적용한 패턴이다. 중요 포인트 대리자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 인터페이스를 사용한다. 대리자는 실제 서비스에 대한 참조 변수를 갖는다.(합성) 대리자는 실제 서비스의 같은 이름을 가진 메서드를 호출하고 그 값을 클라이언트에게 돌려준다. 대리자는 실제 ..