코드스피츠 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가 많으면 안됨
마지막에만 있는게 맞음
형만 생성할 수 있게끔 풀어주면 클래스의 은닉이 올라감. 보안성이 좋아짐
'오브젝트' 카테고리의 다른 글
Java 객체지향 프로그래밍(Object Oriented Programming)이란 (0) | 2022.12.10 |
---|---|
추상 클래스란(What), 사용하는 이유(Why), 사용법(How) (0) | 2022.12.06 |
6. 메시지와 인터페이스 - 1 (0) | 2022.10.14 |
5. 책임 할당하기 - 5 (0) | 2022.10.14 |
5. 책임 할당하기 - 4 (0) | 2022.10.14 |
댓글