단일 책임 원칙 Single Responsibility Principle

클래스는 단 한개의 책임을 가져야 함

클래스가 여러 책임을 갖게 되면 그 클래스는 각 책임마다 변경되는 이유가 발생하기 때문에 유지보수가 힘듦

개방 폐쇄 원칙 Open Closed Principle

클래스는 확장에는 개방적이고 변경에는 폐쇄적이어야 함

기능을 변경하거나 확장할 수 있으면서 그 기능을 사용하는 코드는 수정하지 않아야 함

Untitled

자바 어플리케이션에서 JDBC Driver Manager를 사용하기 위해서 설계된 구조

Mysql, Oracle는 모두 변화에는 확장적이지만, 자바 어플리케이션은 수정에 폐쇄적 → 즉 Oracle DB의 변화가 발생해도 자바 어플리케이션에서는 수정할 코드가 없음

개방 폐쇄 원칙의 핵심은 변화하는 부분을 추상화하는 것

리스코프 치환 원칙 Liskov Substitution Principle

상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 함

즉, 특정 메소드가 상위 타입을 인자로 사용한다고 할 때, 그 타입의 하위 타입으로 사용해도 문제없이 동작해야 함

public int calculate(final Item item) {
	return item.calculate();
}

상위 타입인 Item이 있고, 하위 타입인 computer가 있을 때 파라미터로 computer 타입을 넘겨도 정상적으로 동작해야 함

인터페이스 분리 원칙 Interface Segregation Principle

클라이언트는 자신이 사용하는 메소드에만 의존해야 함