SOLID 원칙
객체 지향 설계에 있어 이해하기 쉽고, 유연하며 유지보수 및 확장이 편하게 이루어질 수 있게 지켜야 할 5가지 원칙에 대해 말한다.
SRP: 단일 책임 원칙(Single Responsibility Principle)
하나의 클래스는 하나의 책임(기능)만 가져야 한다는 원칙이다.
예를 들자면 모든 공구가 합쳐져 있는 다용도칼과 각자의 공구들을 생각할 수 있다. 사용하는데 있어서는 다용도칼이 유용할 수 있으나 코드의 경우에는 다를 수 있다.
단일 책임 원칙을 지킴으로써 코드의 가독성을 늘리고, 유지보수에 있어 용이함을 얻을 수 있다.
OCP: 개방 - 폐쇄 원칙(Open/Closed Principle)
확장에는 열려있으나 변경에는 닫혀있어야 한다는 원칙이다.
변화하는 부분에 추상클래스와 상속등을 이용한 방법으로 기능의 확장은 가능하나 기존 클래스의 기능을 변경시키지는 않는다. 이를 통해 한 가지의 변화가 다른 곳에도 영향을 끼치는 상황을 방지할 수 있다.
LSP: 리스코프 치환 법칙(Liskov Substitution Principle)
서브타입은 언제나 기반타입으로 교체할 수 있어야 한다는 원칙이다.
즉 자식 클래스는 부모클래스에서 구현된 기능은 전부 수행할 수 있어야 한다는 뜻이다.
다형성을 지원하기 위한 원칙이며 자식 객체가 부모 객체의 방향성을 따르게 하기 위함이다.
ISP: 인터페이스 분리 원칙(Interface Segregation Principle)
클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다
범용적인 하나의 인터페이스보다 사용에 맞게끔 여러개로 분리해야 한다는 뜻이다.SRP와 유사하게 각각 클래스와 인터페이스의 단일책임을 강조한다고 볼 수 있다.이를 통해 코드의 가독성과 수정에 있어 용이함을 향상시킬 수 있다.
DIP: 의존관계 역전 원칙(Dependency Inversion Principle) 저수준 모듈보다 고수준 모듈에 의존해야 한다는 원칙이다.어떤 클래스를 참조할 상황이 생긴다면 그 클래스가 아닌 그 클래스의 상위요소인 추상클래스나 인터페이스를 참조하라는 것이다. 변화가능성이 더 낮은 것과 의존관계를 맺으라는 이야기이다. 이를 통해 코드의 변경에 의해 따라올 파급효과를 줄일 수 있다.
'개발일지' 카테고리의 다른 글
개발일지 21 - JPA (0) | 2023.11.14 |
---|---|
개발일지 20 - Spring Bean (0) | 2023.11.13 |
개발일지 18 - 3계층 아키텍쳐 (0) | 2023.11.09 |
개발일지 17 - 접근제어자 (0) | 2023.11.08 |
개발일지 16 - StringBuilder (0) | 2023.11.07 |