SOLID
- SRP(Single Responsiblity Principle) : 단일 책임 원칙
- OCP(Open Closed Principle) : 개방 폐쇄 원칙
- LSP(Liskov Subsititution Principle) : 리스코프 치환 원칙
- ISP(Interface Segregation Principle) : 인터페이스 분리 원칙
- DIP(Dependency Inversion Principle) : 의존 역전 원칙
응집도를 높이고(High Cohesion), 결합도는 낮추는(Loose Coupling) 객체 지향 프로그래밍 및 설계의 5가지 기본 원칙
SPR - 단일 책임 원칙
- 클래스를 역할과 책임에 따라 분리해 각각 하나의 역할과 책임만 갖게 해야한다.
- 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.
role에 따라 클래스를 나눔으로써 단일 책임 원칙을 적용
OCP - 개방 폐쇄 원칙
- 자신의 확장에는 열려 있고, 주변의 변화에 대해서는 닫혀 있어야 한다.
- 상위 클래스나 인터페이스를 중간에 두어 자바 애플리케이션이 DB 변화에 영향을 받지 않는다.
- 유연성, 재사용성, 유지보수에 용이
LSP - 리스코프 치환 원칙
- 서브타입은 언제나 자신의 기반(Base) 타입으로 교체할 수 있어야 한다.
- 하위 클래스의 인스턴스는 상위형 객체 참조 변수에 대입해 상위 클래스의 인스턴스 역할을 하는 데 문제가 없어야 한다.
ISP - 인터페이스 분리 원칙
- 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안 된다.
- 인터페이스를 통해 메서드를 외부에 제공할 때는 최소한의 메서드만 제공(인터페이스 최소주의 원칙)
- 상위클래스는 풍성할수록 좋고, 인터페이스는 작을 수록 좋다.
- 특별한 경우가 아니라면 단일 책임 원칙을 적용
DIP - 의존 역전 원칙
- 자주 변경되는 구체 클래스에 의존하지 말아야 한다.
- 고차원 모듈은 저차원 모듈에 의존하면 안 된다. 이 두 모듈 모두 다른 추상화 된것에 의존해야 한다.
- 추상화된 것은 구체적인 것에 의존하면 안 된다. 구체적인 것이 추상화된 것에 의존해야 한다.
- 스노우타이어를 일반 타이어로 교체할 때 자동차는 그 영향에 노출
- 자동차 자신보다 더 자주 변하는 스노우타이어에 의존하기에 부서지기 쉬움
- 자동차가 구체적인 타이어들이 아닌 추상화된 타이어 인터페이스만 의존
- 다른 구체적인 타이어로 변경돼도 자동차는 영향을 받지 않는다.
- 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변화하기 쉬운 것이 변화에 영향받지 않게 한느 것이 의존 역전 원칙이다.
참고 자료
- 스프링 입문을 위한 자바 객체 지향의 원리와 이해, 위키북스, 김종민(지은이)
'Java' 카테고리의 다른 글
[Java] GUI 계산기 만들기(2) 키보드 (0) | 2020.05.27 |
---|---|
[Java] GUI 계산기 만들기(1) (1) | 2020.05.21 |
[Java] 템플릿 메서드 , 팩터리 메서드 , 전략 , 템플릿 콜백 패턴 (0) | 2020.05.14 |
[Java] 어댑터 패턴, 프록시 패턴, 데코레이터 패턴, 싱글턴 패턴 (0) | 2020.05.14 |
[Java] JVM 메모리 사용 방식 (0) | 2020.05.11 |