본문 바로가기
공부일기장

토비의 스프링 공부 -1

by 디찌s 2023. 12. 12.
728x90
반응형

팩토리 메서드 패턴을 사용할경우
자주 변화하는 코드를 상위 클래스 추상 메서드로 만들어
서브클래스에서 구현하여 사용한다.
단 , 템플릿 메서드 패턴은 상속을 이용하므로 다중상속이 안된다는 단점이 있다.
그러니 단순히 한가지의 추상메서드 생성을 위해 사용하는것은 바람직하지 않다.


결합도가 높은 class

예를들어 A라는 클래스안에서 B클래스를 이용하여 어떤 작업을 한다고 치자.

이럴경우 , B클래스가 아닌 C클래스를 바꿀대 A클래스는 B,C 클래스가 무슨역할을 하는지 정확히 알고 써야한다.

이것을 방지하기위해선, 즉 A 클래스는 B클래스가 뭔지 C클래스가 뭔지 알필요없이 중간 느슨한 연결고리를 만들어서 A 클래스에 영향을 미치지 않도록 설계하여야한다.

이것을 '추상화' 라고 한다.

 

추상화는 어떤것들에 대한 공통적으로 뽑아내서 이를 따론 분리해내는 작업이다.(자바에선 인터페이스이다.)44

 

'인터페이스'는 자신을 구현한 클래스에 대한 구체적인 정보를 모두 감춰버린다.

실제 예를 들어보면 쇼핑몰 DB에 접근하는 Dao 안에는 조회 , 삭제 ,수정 메소드가 존재한다.
그리고 dao에선 db와 연결하는 B 커넥션 클래스를 사용하고있다. 만약에 db를 변경하게된다면 C라는 커넥션은 다시만들어서 연결하여야한다.
실제 지금은 간단한 커넥션 클래스이여서 알기 쉽지만 만약 B,C커넥션 클래스가 복잡하고 알기 쉽지않다면 , 둘중에 뭘 사용할지 각클래스에 구현내용을 알고있어야한다..

 

 

서비스,클라이언트

두개의 오브젝트가 있을경우 사용하는쪽이 클라이언트 , 사용당하는쪽이 서비스라고 부른다

 

클래스와 클래스를 결합해서 만드는것보단

추상호를 이용하여 오브젝트와 오브젝트를 결합하도록 개발해야한다.

 

오브젝트와 오브젝트의 관계와 클래스와 클래스간의 관계를 명확히 구분할줄 알아야한다.

 

클래스와 클래스간의 관계는 어떤한 A클래스의 명시된 B클래스를 적는것이고

 

오브젝트와 오브젝트의 관계는 런타임시에 관계가 맺어지는 것으로 생각하면된다.

즉 인터페이스를 이용하여 구현하면 이러한 상황이 발생한다.

 

높은 응집도 , 낮은 결합도

 

한 클래스가 관심사가 오직 한 부분에만 많은 관심을 쏟고 있다고하는것을 응집도가 높다고한다.

 

하나의 클래스를 변경할때 파도처럼 연결되어있는 모든 클래스에 영향을 끼치는것을 높은 결합도라하며 , 이것을 줄이는것을 낮은 결합도라한다.

 

전략 패턴

 

자신의 기능 맥락에서 변경이 자주 일어나느곳을 인터페이스를 통해 통쨰로 외부 분리시키고,이를 구현하여 구체적인 알고리즘 클래스를 필요에 따라 변경하며 사용하는것을 전략 패턴이라 부른다.

 

팩토리

객체의 생성방법을 결정하고 , 그렇게 만들어진 오브젝트를 돌려주는 오브젝트를 흔히 팩토리 라고 부른다.4

 

라이브러리 , 프레임워크

라이브러리 : 자신의 코드에서 제어권을 가지고 운용할수있다.

프레임워크 : 자신의 코드가 아닌 프레임워크에 의해 사용된다.

728x90
반응형

댓글