토비의스프링
-
제어의 역전(IOC - Inversion Of Control) 앞서 우리는 UserDao를 분리와 확장이 잘 적용된 깔끔한 코드로 리팩토링하는 작업을 수행했다. 사실 우리가 역할을 넘어간 UserDaoTest가 있다. 테스트용으로 만든건데 DB커넥션 클래스의 결정과 UserDao와의 연결까지 맡고 있으니 문제가 있습니다. 이것도 분리해줘야 합니다. 지금부터 우리가 따로 분리해내어 만들 클래스는 팩토리 라는 이름으로 사용되는 클래스입니다. 팩토리 클래스의 역할은 객체의 생성방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는 역할을 합니다. UserDaoTest에서 테스트 목적의 기능을 뺀 나머지를 한데 모아 DaoFactory라는 이름의 클래스로 만들겠습니다. DaoFactory.java 그리고 UserD..
제어의 역전(IOC)제어의 역전(IOC - Inversion Of Control) 앞서 우리는 UserDao를 분리와 확장이 잘 적용된 깔끔한 코드로 리팩토링하는 작업을 수행했다. 사실 우리가 역할을 넘어간 UserDaoTest가 있다. 테스트용으로 만든건데 DB커넥션 클래스의 결정과 UserDao와의 연결까지 맡고 있으니 문제가 있습니다. 이것도 분리해줘야 합니다. 지금부터 우리가 따로 분리해내어 만들 클래스는 팩토리 라는 이름으로 사용되는 클래스입니다. 팩토리 클래스의 역할은 객체의 생성방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는 역할을 합니다. UserDaoTest에서 테스트 목적의 기능을 뺀 나머지를 한데 모아 DaoFactory라는 이름의 클래스로 만들겠습니다. DaoFactory.java 그리고 UserD..
2016.03.03 -
초난감 DAO 코드를 개선해온 결과를 객체지향 기술의 여러 가지 이론을 통해 설명한다. 개방 폐쇄 원칙 (OCP. Open-Closed Principle) - 깔끔한 설계를 위해 적용 가능한 객체지향 설계 원칙 중의 하나다. ‘클래스나 모률은 확장에는 열려 있어야 하고 변경에는 닫혀있어야 한다’라고 할 수 있다. 객체지향 설계 원칙(SOLID) 객체지향 기술은 어느 날 한 번에 만들어진 것이라기보다는 오랜 시간에 걸쳐 점진적으로 발전해온 기술이라고 볼 수 있다. 그렇기 때문에 객체지향 프로그래밍 언어의 종류도 다양하고 객체지향 기술을 받아들이고 적용하는 관점과 기법도 조금씩 차이가 있다. 그럼에도 객체지향이라는 이름으로 묶을 수 있는 분명한 특징이 있다. 객체지향 설계 원칙은 객체지향의 특징을 잘 살릴 ..
DAO 분리와 확장(4/4) - 네번째, 원칙과 패턴초난감 DAO 코드를 개선해온 결과를 객체지향 기술의 여러 가지 이론을 통해 설명한다. 개방 폐쇄 원칙 (OCP. Open-Closed Principle) - 깔끔한 설계를 위해 적용 가능한 객체지향 설계 원칙 중의 하나다. ‘클래스나 모률은 확장에는 열려 있어야 하고 변경에는 닫혀있어야 한다’라고 할 수 있다. 객체지향 설계 원칙(SOLID) 객체지향 기술은 어느 날 한 번에 만들어진 것이라기보다는 오랜 시간에 걸쳐 점진적으로 발전해온 기술이라고 볼 수 있다. 그렇기 때문에 객체지향 프로그래밍 언어의 종류도 다양하고 객체지향 기술을 받아들이고 적용하는 관점과 기법도 조금씩 차이가 있다. 그럼에도 객체지향이라는 이름으로 묶을 수 있는 분명한 특징이 있다. 객체지향 설계 원칙은 객체지향의 특징을 잘 살릴 ..
2016.02.19 -
DAO의 분리 1. 관심사의 분리 - 관심이 같은 것끼리 하나의 객체 안으로 또는 모이게 하고, 관심이 다른 것은 가능한 따로 떨어져서 서로 영향을 주지 않도록 분리한다. 2. 커넥션 만들기의 추출 - 전편의 DAO 예제를 살펴 보면 메소드 안에 커넥션 정보가 담겨 있기 때문에 수백, 수천 개의 DAO 메소드를 만들게 된다면 코드가 여기저기 중복 될 뿐만 아니라 향후 다른 커넥션 정보를 사용 할 경우 이 모든 DAO 메소드를 수정해야 한다. 즉, 커넥션 가져오는 중복 코드를 분리해야 한다. 중복된 DB 연결 코드를 getConnection() 이라는 메소드로 분리 한다면 커넥션 정보가 변경된다 하더라도 한 메소드의 코드만 수정하면 된다. 리펙토링 리펙토링은 기존의 코드를 외부의 동작방식에는 변화 없이 내..
DAO 분리와 확장(2/4) - 두번째, DAO의 분리DAO의 분리 1. 관심사의 분리 - 관심이 같은 것끼리 하나의 객체 안으로 또는 모이게 하고, 관심이 다른 것은 가능한 따로 떨어져서 서로 영향을 주지 않도록 분리한다. 2. 커넥션 만들기의 추출 - 전편의 DAO 예제를 살펴 보면 메소드 안에 커넥션 정보가 담겨 있기 때문에 수백, 수천 개의 DAO 메소드를 만들게 된다면 코드가 여기저기 중복 될 뿐만 아니라 향후 다른 커넥션 정보를 사용 할 경우 이 모든 DAO 메소드를 수정해야 한다. 즉, 커넥션 가져오는 중복 코드를 분리해야 한다. 중복된 DB 연결 코드를 getConnection() 이라는 메소드로 분리 한다면 커넥션 정보가 변경된다 하더라도 한 메소드의 코드만 수정하면 된다. 리펙토링 리펙토링은 기존의 코드를 외부의 동작방식에는 변화 없이 내..
2016.02.12