2013년 4월 8일 월요일

Spring 1일차


토비의 스프링3

문제1. Connection이 변경되면 어쩔건가
문제2. 여러종류의 DAO가 필요하다면 어쩔건가.
문제3. Abstract method를 매번 정의해야하는가.
문제4. 그러면 다시 각 DAO 에서는 새로운 Connection을 어떻게 만들건가??
문제5. 결국 알맞는 Connection class 는 DAO에서 new DConnection처럼 만들어야하니 DAO를 각각 수정해야한다.
문제6. 파라미터로 넘기면 main자체에 많은 obejct가 만들어진다.
문제7. Factory 에서 많은 DAO가 만들어지면 파라미터로 같은 Connection object를 파라미터로 넘겨야한다.


해결
1. Connection 분리 
2. Abstract method 와 class 의 사용으로 extends 이용( Template method pattern, Factory Method Pattern )
3. Super,Sub Class 로 하지말고 완전 Class를 분리하여 생성자에서 Object 생성하여 사용.
4. Coonection class 자체를 Interface 로 만들어서 각 DAO에 알맞는 Connection class를 만든다.
5. DAO가 생성될때 특정 Connection class의 상위 Class로 파라미터를 받게 만든다. Connection으로 받으면 됨.
6. Factory class를 만들어서 각 DAO를 반환하는 method들을 구현해서 사용한다.
7. Factory 내부에 Connection 객체를 반환하는 method를 만들어서 파라미터 넘기는 부분에 반환해서 Connection을 중복생성 하지 않는다.


%Template Method Pattern
Abstract Class 로 하여 기본 변하지 않는 method와 변해야하는 abstract method를 넣어
상속시 사용자가 변해야하는 abstract method를 수정하게 하는 pattern

%Factory Method Pattern
Class 에서 꼭 필요로 하는 객체 반환 Method 를 Abstract 로 하여
상속시 사용자가 반드시 특정 Obejct 를 반환하는 Method 를 작성하게 하는 Pattern

%Strategy Pattern
필요에따라 변경이 필요한 알고리즘을 인터페이스 통째로 외부로 분리시키고
이를 구현한 구체적인 알고리즘 클래스를 필요에 따라 바꿔서 사용하는 패턴


Spring Framework 를 이해하기 위한 Java OOP 의 리팩토리과정
이후 Annotation과 Spring Lib 들을 이용해서 Spring 에 알맞도록 설정을 해서 사용한다.

본격적으로 IoC가 적용된 Spring Framework를 배워보자

1일차는 여기까지고 1장은 다본다.

댓글 없음:

댓글 쓰기