로버트 마틴의 좋은 객체 지향설계의 5가지 원칙의 앞 글자를 따서 만든 용어

시스템에 새로운 기능이 확장되거나 변경사항이 있는 경우 기존 기능들이 영향을 적게 받는 것이 좋은 설계

1. SRP(Single Responsibility principle), 단일 책임 원칙

2. OCP(Open/Closed Principle), 개방 폐쇄 원칙

3. LSP(Liskov substitution principle), 리스코프 치환 원칙

4. ISP (Interface Segregation principle), 인터페이스 분리 원칙

한 클래스에 기능을 전부 정의하는 것보다는

interface People {
	public void cook();     //요리하기
	public void cleaning(); //청소하기

	public void work();     //작업하기
	public void submit();   //제출하기
}

특정 클래스의 인터페이스로 분리 해주는것이 더 좋은 객체 지향설계이다

//주부 인터페이스
interface Housewife {
	public void cook();
	public void cleaning();
}

//직장인 인터페이스
interface Worker {
	public void work();
	public void submit();
}

5. DIP(Dependency inversion principle), 의존 관계 역전 원칙