(역자 주: 이 구성 요소가 적용되는 A 클래스를 다른 클래스인 B가 사용할 때, B는 A라는 클래스의 행동 중에 관심이 있는 행동은 이 구성요소가 정의된 행동 뿐이라는 의미)
*{color:white}+"인터페이스"+{color} 은 무엇일까요?

.구현보다는 인터페이스에 의존하도록 코딩하는 것이 소프투웨어를 확장이 용이 하게합니다.
.인터페이스에 의존하도록 코딩하면, 여러분의 코드는 인터페이스의 서브 클래스 모두 심지어 아직 만들지 않은 클래스와도 잘 동작할 것입니다.
*{color:white}+"캡슐화"+{color} 은 무엇일까요?
.여러분의 클래스를 불필요한 변경으로부터 보호합니다.
.변화의 가능성이 있다고 생각되는 프로그램의 기능이 있을 때, 그 기능을 자주 변하지 않는 부분과 분리해야 합니다.
변경하는 것을 갭슐화 하려는 노력이 항상 필요하다.
*{color:white}+"변경"+{color} 은 무엇일까요?
.소프트웨어의 변하지 않는 진리는 소프트웨어는 변한다는 것이다.
.설계가 잘 되어 있지 않은 소프트웨어는 처음 변경이 일어날 때 무너진다. 하지만 위대한 소프트웨어는 쉽게 변경될 수 있다.
. 소프트웨어를 변경에 잘 견디도록 만드는 가장 쉬운 방법은 각 클래스가 변경의 이유를 하나만 갖도록 하는 것이다.
(즉, 클래스 안의 변경 요인을 줄여서 변경 가능성을 최소화 하는 것입니다.)