지금까지 객체지향 언어를 공부하면서 막연히 가장 많이 사용되는 개발언어라는 것만 알고 있었고,
정확히 어떤점에서 강점을 가지고, 그 강점을 살리기 위해서는 어떤 방식으로 구현해야 하는지에 대해서는 깊게 생각해보지 못했다.
클린 코드의 저자인 로버트 C.마틴의 논리에 따르면 좋은 객체지향 언어란 아래의 5가지 원칙을 가진다고 한다.
이 원칙들은 사실상 자바로 단순히 분류하기 보다는 소프트웨어 공학의 분야이다.
- 단일 책임 원칙(Single responsibility principle) : SRP
ㄴ 한 클래스는 하나의 책임만 가져야 한다. - 개방 폐쇄 원칙(Open/closed principle) : OCP
ㄴ 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.(구현/분리) - 리스코프 치환 원칙(Liskov substitution principle) : LSP
ㄴ 프로그램 객체는 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다. - 인터페이스 분리 원칙(Interface segregation principle) : ISP
ㄴ 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다. - 의존관계 역전 원칙(Dependency inversion principle) : DIP
ㄴ 프로그래머는 "구체화"보다 "추상화"에 의존해야 한다. 즉 의존성 주입으로 이 원칙을 따를 수 있다.
즉 객체 지향의 핵심은 다형성이라고 할 수 있다. 다만 자바의 다형성 기능만으로는 5원칙을 제대로 지킬 수 없다. (OCP, DIP 위반)
그리고 이를 지킬 수 있도록 도와주는 것이 스프링이다.
'개발 > Java' 카테고리의 다른 글
[Java]Comparator (0) | 2022.03.31 |
---|---|
[Java]PriorityQueue (0) | 2022.03.27 |
[Java]Call by value, Call by reference (0) | 2022.03.09 |
[Java]순수 자바 코드로 DIP와 OCP를 준수하는 방법 (0) | 2022.03.06 |
[Java]Optional (0) | 2022.03.01 |