web/JAVA & SpringBoot
객체지향 5대 원칙(SOLID)
3hoon
2022. 12. 7. 13:33
1. SRP Single Responsibility Principle 단일 책임 원칙
객체는 오직 하나의 책임을 가져야 한다.
만일 객체가 여러가지의 책임을 가지고 있다면 여러가지 변경 사항이 있을수 있어서
해당 클래스를 변경해야하는 이유가 명확하지 않을 수 있어서 관리하는데에 문제가 발생한다.
단일 책임 원칙을 지키면 변경이 필요할 때 수정할 대상이 명확해진다.
2. OCP Open-Colsed Principle 개방 폐쇄 원칙
객체는 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다.
확장에 대해서 개방적이라는 말은 요구사항이 변경됐을때 새로운 객체를 추가하여 기능을 확장 할수 있음을 말하고
수정에 대해서 폐쇄적이라는 말은 기존의 코드를 수정하지 않고 새로운 객체를 추가할 수 있다는 말이다.
3. LSP Liskov Substitution Principe 리스코프 치환 원칙
자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다.
한마디로 부모클래스를 상속한 자식 클래스는 부모 클래스의 역할을 정확히 해내야 한다라는 뜻이다.
4. ISP Interface Segregation Principle 인터페이스 분리 원칙
클라이언트에서 사용하지 않는 메소드는 사용해선 안된다.
하나의 큰 인터페이스를 상속 받기 보다 인터페이스를 구체적이고 작은 단위들로 분리시켜서
꼭 필요한 인터페이스만 상속하자는 의미이다.
5. DIP Dependency Inversion Principle 의존성 역전 원칙
추상성이 높고 안정적인 고수준의 클래스는 구체적이고 불안정한 저수준의 클래스에 의존해서는 안된다.
클래스와 클래스 사이에는 의존 관계가 존재하게 되는데 이때 구체적인 클래스에 의존하지 말고 최대한 추상화한
클래스에 의존하라는 뜻이고 이는 상위모듈은 하위 모듈에 의존해서는 안된다.