<aside> 1️⃣
애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리한다.
달라지지 않는 부분을 찾아 캡슐화
→ 코드 변경 과정에서 유연성과 확장성을 향상
</aside>
<aside> 2️⃣
구현보다는 인터페이스에 맞춰서 프로그래밍한다.
특정 행동 인터페이스를 구현한 별도의 클래스 집합.
</aside>
인터페이스 단어의 중의적 의미
실행 시 쓰이는 객체가 코드에 고정되지 않도록 **상위 형식(supertype)**에 맞춰 다형성을 활용할 것!
상위 형식에 맞춰 프로그래밍하기
→ 변수 선언 클래스에서 실체 객체의 형식을 몰라도 됨.
→ 객체 변수 대입 시 어떤 객체든 넣을 수 있음.
<aside> 3️⃣
상속보다는 구성을 활용한다.
구성을 활용한 시스템 설계 → 유연성 향상.
</aside>