다형성의 핵심
-유연하고 변경이 용이.
역활 - 인터페이스
구현 - 인터페이스를 구현한 클래스 (구현객체)
역활(클라이언트)는 개체가 다른 것으로 바뀐다 하더라도
아무런 문제없이 대체가 가능하도록 해야한다.
예를 들어
자동차(클라이언트) 는 K3나 아반떼 등 어떤 기종이든 자동차 라는 핵심적인 기능은 변하지 않는다.
또는
연극을 예로들어 로미오 / 줄리엣의 역활 이라는 클라이언트가 존재 한다고 할때 어떤 배우가 해당 역활을 수행하든
지장이 없는 경우와 같다.
★다형성은 해당 교체가 가능하다.
코드에서(DB도 마찬가지) 주된 기능헤서 적용된 정책 등을 클래스로 관리할때
기존코드에 별도의 수정사항 없이 수정이 가능해야 한다.
★역활과 구현을 분리하면 세상이 단순해지고 유연해지며 변경이 편리해 진다.
1.클라이언트는 대상의 역활 (인터페이스)만 알고 있으면 된다.
2.클라이언트는 구현 대상의 내부 구조를 몰라도 된다.
3.클라이언트는 구현 대상의 내부구조가 변경되더라도 영향을 받으면 안된다,
4.클라이언트는 구현 대상 자체를 다른 것으로 변경해도 영향을 받지 않는다.
객체 설계에 역활과 구현을 명확하게 분리하는게 중요하다.
1. 역활을 먼저 부여하고
2. 그 역활에 맞는 구현객체를 만들어준다.
'SpringBoot' 카테고리의 다른 글
10월3일 Spring Boot discount의 구조 및 실행클래스 구조 (다형성) (2) | 2022.10.04 |
---|---|
10월2일 Spring Boot Order 객체 (다형성) (0) | 2022.10.03 |
10월1일 Spring Boot Member 객체 (다형성) (0) | 2022.10.02 |
9월29일 Spring Boot 스프링의 객체지향 (0) | 2022.09.29 |
9월28일 SpringBoot 객체 협력관계 (0) | 2022.09.29 |