DevBoi

[Spring] 스프링 디자인 패턴 본문

Develop/[Spring]

[Spring] 스프링 디자인 패턴

HiSmith 2022. 3. 28. 12:58
반응형

1. 프록시 패턴

프록시 패턴은 어떤 객체에 대한 접근을 제어하기 위한 용도, 실제 객체의 메서드를 호출하면, 호출 중간에 가로채는 패턴이다.

제어흐름을 조정하기 위해 중간에 대리자를 두는 패턴이다.

스프링에선 AOP를 통해, 이런 공통 적인 기능을 분리해, 필요한 곳에서 재사용을 한다.

 

2.싱글턴 패턴

애플리케이션이 시작될때 어떤 클래스가 최초 한번만 메모리를 할당하고 메모리에 인스턴스를 만들어 사용하는 디자인 패턴으로

생성자가 여러번 호출해도, 실제 생성객체는 하나이고 이 객체를 반환하는 패턴

 

3.템플릿 메소드 패턴

슈퍼클래스에기본적인 로직 흐름을 작성, 일부 변경이 필요한 부분을 서브클래스에서 추상메소드로 오버라이딩하여 사용할 수 있는

형태로, 서브클래스에서 필요에 맞게 이를 구현하여 사용하는 디자인 패턴,

코드의 중복 과 재사용성을 줄여준다.

ex. JDBCTemplate, JpaTemplate 등 클래스는 템플릿 메소드 패턴 방식으로 구현이 되어있다.

WebMvcCOnfigurer의 모든 메서드가 default메서드로 선언이 되어있어, 재정의 할 필요가 없고 필요할때 재정의 하여 사용할 수 있다.

 

4. 팩토리 메소드 패턴

팩토리 메소드 패턴은, 객체 생성처리를 서브 클래스로분리하여 처리하도록 캡슐화 한 패턴이다.

즉, 객체의 생성 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성의 변화에 대비하여 유용하게 사용가능

 

장점

비슷한 성격의 객체를 인터페이스를 통해 하나로 관리가 가능하다

협업시 공통코드를 건드리는 일이없이 업무 진행가능

추후 비슷한 유형의 객체생성되어도 impl을 통해 쉽게 추가 가능

 

 

 

5. 전략 패턴

템플릿 메소드 패턴보다 더 유연하고 확장성이 뛰어나다.

오브젝트를 아예 둘로 분리하고, 클래스 레벨에서는 인터페이스를 통해서만 의존하도록 만든다.

Context는 변하지 않고, 클라이언트가 어떤 전략을 사용할지 결정하여, Context에게 전달하고

해당 전략을 통해 Context가 반환한다.

 

 

 

 

반응형

'Develop > [Spring]' 카테고리의 다른 글

[Spring] JWT란?  (0) 2022.03.28
[Spring] Web Server와 Web Application Server 차이  (0) 2022.03.28
[Spring] 빈 라이프 사이클  (0) 2022.03.28
[Spring] 싱글턴은 쓰레드에 안전한가?  (0) 2022.03.28
[Spring] SingleTon이란  (0) 2022.03.28