카테고리 없음

6장 스프링이 사랑한 디자인 패턴

아놀드금자 2023. 6. 25. 21:59
728x90

 

앞 내용 정리

객체지향특성(캡슐화, 상속, 추상화, 다형성)  -> 도구

설계원칙(SOLID) -> 도구 사용법

디자인패턴 -> 도구를 활용한 요리법

 

디자인 패턴은 객체지향 특성 중 상속(extends), 인터페이스(interface/implements), 합성(객체를 속성으로 사용) 이용함

 


어댑터 패턴 (Adapter pattern)

어댑터 = 변환기 -> 다른 두 인터페이스 사이에 통신이 가능하도록 함

- JDBC/ODBC, 플랫폼별 JRE이 어댑터 패턴의 사용 예시

- 개방폐쇄원칙(OCP)를 활용한 설계패턴임

호출 당하는 쪽의 데서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴

 

 

프록시 패턴 ( Proxy pattern)

대리자, 대변인 -> 다른 누군가를 대신해 역할 수행

- 대리자는 실제 서비스와 같은 이름의 메서드 구현(인터페이스 사용)

- 대리자는 실제 서비스에 대한 참조 변수를 갖는다(합성) ??

- 대리자는 실제 서비스와 같은 이름을 가진 메서드를 호출, 그 값을 클라이언트에게 돌려줌

제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴

 

 

데코레이터 패턴 (Decorator pattern)

장식자 -> 원본에 장식을 더함

프록시는 반환값을 그대로 전달(제어 흐름을 변경, 별도의 로직처리 목적), 데코레이터는 반환값에 장식을 붙임

- 대리자는 실제 서비스와 같은 이름의 메서드 구현(인터페이스 사용)

- 대리자는 실제 서비스에 대한 참조 변수를 갖는다(합성) ??

- 대리자는 실제 서비스와 같은 이름을 가진 메서드를 호출, 그 값에 장식을 더해 클라이언트에게 돌려줌

메서드 호출의 반환값에 변화를 주기 위해 중간에 장식자를 두는 패턴

 

 

싱글톤 패턴 (Singleton pattern)

인스턴스를 하나만 만들어 재사용 (여러개 만들면 자원 낭비, 예상치 못한 오류 가능성)

의미상 두 개의 객체가 존재할 수 없음

- new를 실해할 수 없도록 생성자에 private 접근 제어자 지정

- 유일한 단일 객체를 반환할 정적 메서드 필요

- 유일한 단일 객체를 참조할 정적 참조 변수 필요

특??

- private 생성자를 갖는다

- 단일객체 참변을 정적 속성으로 갖는다

- ????단일 객체 참조 변수가 참조하는 단일 객체를 반환하는 getInstance() 정적 메서드를 갖는다??????????

- 단일 객체는 쓰기 가능한 속성을 갖지 않는 것이 정석

클래스의 인스턴스(객체)를 하나만 만들어 사용하는 패턴

 

 

템플릿 메서드 패턴 (Template Method pattern)

상위 클래스의 견본 메서드에서 하위 클래스가 오버라이딩한 메서드를 호출하는 패턴

 

 

팩토리 메서드 페턴 (Factory Method pattern)

오버라이드 된 메서드가 객체를 반환하는 패턴

 

 

전략 패턴 (Strategy pattern)

전략 패턴을 구성하는 세 요소

- 전략 메서드를 가진 '전략 객체' [무기]

- 전략 객체를 사용하는 '컨텍스트'(전략객체 사용자) [군인]

- 전략객체를 생성해 컨텍스트에 주입하는 '클라이언트'(제 3자, 공급자) [보급장교]

ex) 보급 장교가 군인에게 무기 지급 -> 군인은 무기에 따라 전투 수행

클라이언트가 전략을 생성해 전략을 실행할 컨텍스트에 주입하는 패턴

 

 

템플릿 콜백 패턴 (Template Callback pattern) - 견본/회신 패턴

전략 패턴의 변형, DI(의존성 주입)에서 사용하는 특별한 형태의 전략 패턴

전략을 익명 내부 클래스로 구현한 패턴

 

 

 


https://search.shopping.naver.com/book/catalog/32462919817?cat_id=50010920&frm=PBOKPRO&query=%EC%8A%A4%ED%94%84%EB%A7%81+%EC%9E%85%EB%AC%B8%EC%9D%84+%EC%9C%84%ED%95%9C+%EC%9E%90%EB%B0%94+%EA%B0%9D%EC%B2%B4+%EC%A7%80%ED%96%A5%EC%9D%98+%EC%9B%90%EB%A6%AC%EC%99%80+%EC%9D%B4%ED%95%B4&NaPm=ct%3Dljbcp4j4%7Cci%3D0f1327caf7a1ef44c9bfe864e5955c872c1b0b9a%7Ctr%3Dboknx%7Csn%3D95694%7Chk%3D7f5b9eb32f96d305b6c902435a44401d1900b9e2 

 

스프링 입문을 위한 자바 객체 지향의 원리와 이해 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

728x90