본문 바로가기
반응형
오브젝트

6. 메시지와 인터페이스 - 2

by brightGarden02 2022. 10. 14.

코드스피츠 4강 내용

 

 

❗핵심내용: OCP와 제네릭을 통한 해결

if + instanceof 코드를 클라이언트 방향으로 밀어내야함. 클라이언트를 여러개 만들고 매핑해야함

클라이언트층은 서비스를 다룸

객체설계를 시키는 식으로 만들면 되는데

물어보는 식으로 만들기 때문에 안되는거임

→제일 좋은 것은 시키는것. 그래야 영향을 안받음.

 

 

LSP(리스코프 치환 원칙):

자식형을 부모형으로 완전히 대체할 수 있다.

문제점 원인: 성급한 추상화

기존보다 메서드 개수가 줄어든다면 괜찮다.

기존보다 메서드가 늘어날 경우 문제가 생김

다운캐스팅을 사용하면 안됨

다운캐스팅: OCP 위반을 일으킴

→제너릭을 통해 해결하자

 

 

설계 상에서 LSP, OCP를 지키려고 하자

→ if + instanceof 를 쓰지 말자.

문제: 추상형에 대한 구상 지식을 가지려고 했기 때문

헐리웃 원칙: 떠미는 것

드라이원칙:

인터페이스에서 공통인 요소가 보이면

인터페이스에서 추상클래스로 바꿔줘야함

 

 

클래스를 보고 짜서는 안된다

통신하는 객체를 보고 짜야한다

 

 

제네릭을 사용하면

if, instanceof를 제거할 수 있음

대신 축소됨. 제약이 걸림

down casting → up casting

이렇게 바꾼다

 

 

LSP, OCP를 지켰다면

main에서 if가 나옴

그전에는 if + instanceof 가 나오지 않음

main까지 밀어내야 DI가 작동하고 DI가 성립함

autowired가 많으면 안됨

마지막에만 있는게 맞음

형만 생성할 수 있게끔 풀어주면 클래스의 은닉이 올라감. 보안성이 좋아짐

댓글


반응형
반응형