어댑터 패턴(Adapter Pattern)
- 호출 당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴
- JDBC가 어댑터 패턴을 이용해 다양한 데이터베이스 시스템을 단일한 인터페이스로 조작할 수 있게 해줌
- 클라이언트가 변환기를 통해 service()라는 동일한 메서드명으로 두 객체의 메서드를 호출
프록시 패턴(Proxy Pattern)
- 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴
- 개방 폐쇄 원칙과 의존 역전 법칙이 적용된 설계 패턴
- 대리자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 인터페이스를 사용한다.
- 대리자는 실제 서비스에 대한 참조 변수를 갖는다.(합성)
- 대리자는 실제 서비스의 같은 이름을 가진 메서드를 호출하고 그 값을 클라이언트에게 돌려준다.
- 대리자는 실제 서비스의 메서드 호출 전후에 별도의 로직을 수행할 수도 있다.
데코레이터 패턴(Decorator Pattern)
- 메서드 호출의 반환값에 변화를 주기 위해 중간에 장식자를 두는 패턴
- 데코레이터 패턴은 프록시 패턴과 구현 방법이 같다.
- 프록시 패턴은 클라이언트가 최종적으로 돌려 받는 반환값을 조작하기 않고 그대로 전달하는 반면 데코레이터 패턴은 클라이언트가 받는 반환값에 장식을 더한다.
- 리턴 값에 "정말"이라는 데코를 더해 클라이언트에게 돌려준다. 나머지는 프록시 패턴과 동일
싱글턴 패턴(Singleton Pattern)
- 클래스의 인스턴스, 즉 객체를 하나만 만들어 사용하는 패턴
- 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등 인스턴스를 여러 개 만들게 되면 불필요한 자원으로 사용됨
- 싱글턴 패턴은 오직 인스턴스 하나만 만들고 그것을 계속 재사용한다.
- 싱글턴 패턴을 적용할 경우 의미상 두 개의 객체가 존재할 수 없다.
- 객체 생성을 위한 new에 제약을 걸어야하고, 만들어진 단일 객체를 반환할 수 있는 메서드가 필요하다.
- new를 실행할 수없도록 생성자에 private 접근 제어자를 지정한다.
- 유일한 단일 객체를 반환할 수 있는 정적 메서드가 필요하다.
- 유일한 단일 객체를 참조할 정적 참조 변수가 필요하다.
- 4개의 참조변수(singletonObject, s1, s2, s3)가 하나의 단일 객체를 참조하고 있다.
- 단일 객체인 경우 공유 객체로 사용되기 때문에 속성을 갖지 않게 하는 것이 정석이다.
- 전역/공유 변수를 가능한 한 사용하지 말아야 한다.
싱글턴 패턴의 특징
- private 생성자를 갖는다.
- 단일 객체 참조 변수를 정적 속성으로 갖는다.
- 단일 객체 참조 변수가 참조하는 단일 객체를 반환하는 getInstance() 정적 메서드를 갖는다.
- 단일 객체는 쓰기 가능한 속성을 갖지 않는것이 정적이다.
참고 자료
- 스프링 입문을 위한 자바 객체 지향의 원리와 이해, 위키북스, 김종민(지은이)
'Java' 카테고리의 다른 글
[Java] GUI 계산기 만들기(2) 키보드 (0) | 2020.05.27 |
---|---|
[Java] GUI 계산기 만들기(1) (1) | 2020.05.21 |
[Java] 템플릿 메서드 , 팩터리 메서드 , 전략 , 템플릿 콜백 패턴 (0) | 2020.05.14 |
[Java] 객체지향 5원칙 SOILD (0) | 2020.05.14 |
[Java] JVM 메모리 사용 방식 (0) | 2020.05.11 |