티스토리 뷰

스프링을 구성하는 디자인 패턴 - 프록시 패턴 (예 : AOP)


target을 직접 호출하는 것이 아닌, 대행 객체를 통해 target에 접근하는 방식

 - 프록시 객체에는 target을 참조하는 참조값을 가지고, 실제 결과값에 대한 조작은 target의 메소드를 호출하여 결과값 반환. 

 - 프록시 객체는 흐름제어만 할뿐 결과값을 변형시키지 않음

 - 프록시 객체는 실제 target 객체에 대한 참조변수를 보유

 - 프록시 객체는 target 객체 호출 전후에도 별도 로직 처리 가능


가상 프록시

Target 객체의 특정 행위를 수행하는 비용이 많이 발생했을 경우 / 무거운 객체를 생성할 때 사용 가능

 - 프록시 객체는 target 객체와 동일한 구조를 가지고 있기 때문에 target 객체와 동일한 사용법 

 - 프록시 객체는 target 객체의 작업을 처리하는 스레드를 생성하고, 해당 스레드에서 작업을 수행

 - 작업이 끝날때까지 계속 기다리는 것이 아닌, 멀티 스레드를 통해 다른 작업도 처리 가능

 - 장점 : 해당 작업을 처리하면서 다른 작업도 처리 가능

   target 객체가 실제로 사용할 때 객체를 생성함으로써, 객체 생성 지연함으로써 메모리 절약 가능

 - 단점 : 프록시안에서 target 객체 생성을 위해 Thread가 생성되고, 멀티스레드를 통해 동기화 작업이 필요할 수 있기 때문에 로직 복잡


출처 : http://ehpub.co.kr/tag/%EA%B0%80%EC%83%81-%ED%94%84%EB%A1%9D%EC%8B%9C/ 

출처 : http://blog.naver.com/PostView.nhn?blogId=2feelus&logNo=220655183083&redirect=Dlog&widgetTypeCall=true


스프링을 구성하는 디자인 패턴 - 템플릿 메소드 패턴 (예 : JDBC)


상위 클래스에 공통적인 메소드가 정의되어 있고, 세부적인 메소드는 추상 메소드로 두워 하위클래스에서 구현하는 방법

 - 상위 클래스 : 로직의 흐름 제어, 하위 클래스가 가지고 있는 공통적인 로직 보유, 개별적인 기능에 대한 추상 클래스 보유 

 - 하위 클래스 : 하위 클래스만이 가지고 있는 추상 메소드를 오버라이딩한 메소드

상위클래스에서 템플릿(틀)에 맞추어 메소드의 흐름을 제어/정의하고, 상속받은 하위 클래스를 이용해 유연성을 주는 디자인 패턴

알고리즘의 구조(틀)를 메소드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패 알고리즘이 단계별로 나누어 지거나, 같은 역할을 하는 메소드이지만 여러곳에서 다른형태로 사용이 필요한 경우 유용한 패턴

상속을 통해 상위클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법 변하지 않는 기능은 상위 클래스, 자주 변경되며 확장할 기능은 하위 클래스 (OCP)


스프링을 구성하는 디자인 패턴 - 싱글톤 패턴 (예 : Bean 생성)


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

싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴

생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 반환 

(자바에선 생성자를 private로 선언해서 생성 불가하게 하고 getInstance()로 받아쓰기도 함)


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함