본문 바로가기

Programming/토비의 스프링 예제9

예제9. 관계설정 기존의 UserDao 에서는 생성자에게 ConnectionMaker의 구현 클래스를 선택하고, 선택한 클래스의 오브젝트를 생성해 연결하는 책임이 있었지만, 이 관심을 분리해서 클라이언트에게 넘긴다.UserDao의 생성자를 수정해 클라이언트가 미리 만들어둔 ConnectionMaker의 오브젝트를 전달 받을 수 있도록 파라미터를 추가UserDao 의 변경없이 자유롭게 DB접속 클래스를 만들어서 UserDao가 사용할 수 있다. 123456789101112131415161718192021222324252627282930313233343536373839package springbook.user.test; import java.sql.SQLException; import springbook.user.dao.Co.. 2014. 8. 26.
예제8. 생성 오브젝트 코드 수정 DAO 생성 메소드의 추가로 인해 발생하는 중복 문제를 해결 하기 위해ConnectionMaker의 구현 클래스를 결정하고 오브젝트를 만드는 코드를 별도의 메소드로 뽑아낸다. 1234567891011121314151617181920212223242526package springbook.user.dao; public class DaoFactory { public UserDao userDao(){ return new UserDao(connectionMaker()); } public AccountDao accountDao(){ return new AccountDao(connectionMaker()); } public MessageDao messageDao(){ return new MessageDao(conne.. 2014. 8. 21.
예제7. 팩토리 UserDaoTest는 UserDao의 기능이 잘 동작하는지를 테스하려고 만든 것임으로 책임이나 관심사를 분리해버려야 한다.분리될 기능 : UserDao와 Connection 구현 클래스의 오브젝트를 만드는 것그렇게 만들어진 두개의 오브젝트가 연결돼서 사용될 수 있또록 관계를 맺어 주는 것 팩토리 : 객체의 생성 방법을 결정하고 그렇게 만들어진 오브젝트를 돌려줌. 오브젝트를 생성하는 쪽과 생성된 오브젝트를 사용하는 쪽의 역할과 책임을 깔끔하게 분리하려는 목적으료 사용. DaoFactory.java12345678910111213141516171819package springbook.user.dao; public class DaoFactory { //팩토리의 메소드는 UserDao 타입의 오브젝트를 어떻게 .. 2014. 8. 20.
예제6. 관심사의 분리 UserDao 의 클라이언트에서 UserDao를 사용하기 전에, 먼저 UserDao가 어떤 ConnectionMaker의 구현 클래스를 사용할지를 결정하도록 만들어본다. 즉 UserDao 오브젝트와 특정 클래스로부터 만들어진 ConnectionMaker 오브젝트 사이에 관계를 설정해주는 것임코드에서는 특정 클래스를 전혀 알지 못하더라도 해당 클래스가 구현한 인터페이스를 사용했다면, 그 클래스의 오브젝트를 인터페이스 타입으로 받아서 사용할 수 있따. 바로 객체지향 프로그램에는 다형성이라는 특징이 있는 덕분이다.기존의 USerDao에서는 생성자가 자신이 사용할 오브젝트를 직접만들어서, 자신과 관계를 만들어버렸다.이 관심을 분리해서 클라이언트에게 떠 넘긴다. UserDaoTest는 UserDao 와 Conne.. 2014. 8. 20.