본문 바로가기

스프링

[자바 상속] extends 확장

VO > 자바빈(JavaBean) : 파라미터가 없는 디폴트 생성자를 갖고 있어야한다. 툴이나 프레임워크에서 리플렉션을 이용해 오브젝트를 생성하는데 필요하기 때문

1.     리플렉션 : 객체를 통해 클래스의 정보를 분석해내는 프로그램 기법(class.forName을 통해 메모리에 로딩된 객체의 메서드 생성자 등을 알아내서 사용가능)

2.     프레임워크 : 흐름을 주도한다. 프레임워크 위에 개발한 클래스를 등록하고 프레임워크가 흐름을 주도함

3.     Property : id, name, password(자바빈의 속성)

프로퍼티는 set/get 메서드를 이용해 수정 또는 조회 가능하다.

 

고객의 DB패스워드가 변경되었다고 해보자. UserDao의 바이너리를 판매한 상태이다. Dao 소스코드를 전달하여 줄 것인가?? 수정해서 쓰라고?? 비싼건데???

DB커넥션 관심을 추상클래스의 상속을 통해 서브클래스를 분리해버리는 것이다.

 

각 회사에 맞도록 서브클래스가 커넥션을 담당한다.

1.     템플릿 메소드 패턴 : 기본적인 로직의 흐름(커넥션/SQL/반환)을 만들고, 그 기능의 일부를 추상메소드나 오버라이딩 가능한 protected 메소드 등으로 만든 뒤 서브클래스에서 이런 메소드를 필요에 맞게 구현해서 사용하도록 하는 방법.(슈퍼클래스에서는 디폴트 기능을 정의해두거나 비워두고, 서브클래스에서 선택적으로 오버라이드)

2.     위 사진처럼 서브클래스에서 구체적인 오브젝트 생성 방법을 결정하게 하는 것을 팩토리 메소드 패턴이라고 부름

서브클래스만 전달하여 이부분만 고치라고 할 수 있음. UserDao의 내용은 안보여줘도 됨

 

하지만 상속이라는 방법이 불편하게 느껴짐. 자바는 다중상속을 허용하지 않으므로

클래스의 분리