< DAO의 분리와 확장 > 


JDBC를 이용하는 작업의 일반적인 순서

1. DB연결을 위한 Connection을 가져온다

2. SQL을 담은 Statement or PreparedStatement를 만든다.

3. 만들어진 Statement 실행한다.

4. 조회의 경우 SQL쿼리의 실행 결과를 ResultSet으로 받아서 정보를 저장할 오브젝트에 옮겨준다.

5. 작업중에 생선된 Connection, Statement, ResultSet 같은 리소스를 닫는다.

6. JDBC API가 만들어내는 예외를 잡아서 직접 처리하거나, 

   메소드에 throws를 선언해서 메소드 밖으로 던진다.



관심사의 분리

- 관심이 같은 것 끼리는 하나의 객체 안으로 또는 친한 객체로 모이게 하고, 

  관심이 다른 것은 가능한 따로 떨어져서 서로 영향을 주지 않도록 분리 하는 것



리펙토링 

- 기존의 코드를 외부의 동작방식에는 변화없이 내부 구조를 변경해서 재구성하는 작업(기술)



템플릿 메서드 패턴

- 기본적인 로직의 흐름을 만들고, 

   그 기능의 일부를 추상 메서드나 오버라이딩이 가능한 protected 메서드로 만든 뒤

   서브 클래스에서 이런 메서드를 필요에 맞게 구현해서 사용하도록 하는 방법

- 상속을 통해 슈퍼클래스의 기능을 확정할 때 사용하는 가장 대표적인 방법


ex) UserDAO를 N사, D사에게 줄 때 각각의 독립적인 connection이 필요할때 

     UserDAO는 추상클래스, Connection 메서드는 추상메서드



디자인 패턴

- 소프트웨어 설계시 특정 상황에서 자주 만나는 문제를 해결하기 위해 사용할 수 있는 재사용 가능한 솔루션



SOLID 객체지향 설계 원칙

- SRP (The Single Responsibility Principle)         : 단일 책임 원칙


- OCP (The Open Closed Principle) : 개방 폐쇄원칙

   : 클래스나 모듈은 확장에는 열려 있어야 하고 

     변경에는 닫혀 있어야 한다.


- LSP (The Liskov Substitution Principle)         : 리스코프 치환 원칙


- ISP (The Interface Segregation Principle)         : 인터페이스 분리 원칙


- DIP (The Dependency Inversion Principle) : 의존관계 역전 원칙



높은 응집도와 낮은 결합도

- 높은 응집도 : 하나의 모듈, 클래스가 하나의 책임 또는 관심사에만 집중되어 있다 라는 뜻

- 낮은 결합도 : 책임과 관심사가 다른 오브젝트 또는 모듈과는 낮은 결합도

, 즉 느슨하게 연결된 형태를 유지하는 것

느슨한 연결은 관계를 유지하는 데 꼭 필요한 최소한의 방법만 간접적인 형태로 제공하고, 

    나머지는 서로 독립적으로 알 필요도 없게 만들어 주는 것 



전략 패턴

- 디자인 패턴의 꽃

- 자신의 기능맥락에서 필요에 따라 변경이 필요한 알고리즘(독립적인 책임으로 분리 가능한 기능)을 

  인터페이스를 통해 통째로 외부로 분리시키고, 

  이를 구현한 구체적인 알고리즘 클래스를 필요에 따라 바꿔서 사용할 수 있게 하는 디자인 패턴




+ Recent posts