프로그래밍/JAVA

[객체지향] SOLID 5원칙

돌및쓰고 2019. 11. 29. 05:40

객체지향 프로그래밍의 5가지 원칙에 대해 알아보자.

 

1. 단일책임 원리 : SRP(Single Responseibility Principle)

- 하나의 클래스는 오직 한가지의 책임과 역할을 가지고 있어야함

 

상인과 상점이 있을때 

상인은 판매와 물품 소개를 담당

상점은 물품재고와 물품수주를 담당

 

상점의 종류가 바뀌더라도 

상인은 영향을 받지 않아야함

 

만약 상인이 판매와 물품 소개, 물품수주를 담당한다면

상점의 종류를 바꿀때 상인이 담당하던 물품수주를

수정해야 하는 경우 가 발생

 

2. 개방 폐쇄 원칙 : OCP(Open Closed Principle)

- 확장에 대해서는 개방적이지만 수정에 대해서는 폐쇄적이여야함

 

클래스의 기능의 추가의 대해서는 관대하지만

새로운 기능을 위해 클래스를 수정해야하는 경우를 지양 하고

이를 인터페이스로 만들어 확장하는 방법을 추구해야함

 

3. 리스코프 치환 법칙 : LSP(Liskov Substitution Principle)

- 자식클래스는 언제나 부모클래스로 대체 할수 있어야함

 

한마디로 부모클래스의 기능은 자식클래스가 문제없이 수행할 수 있어야함

 

4. 인터페이스 분리 법칙 : ISP(Interface Sergregation Principle)

- 클라이언트의 기능이 사용하지 않는 기능에 의해 영향을 받으면 안된다

 

최대한 인터페이스를 분리해서 사용하지 않는 기능을 구현하지 않도록 한다

 

5. 의존성 역전 법칙 : DIP(Dependency Inversion Principle)

-고수준의 클래스(대게 interface)는 저수준의 클래스(구현하는 클래스)에 의존 하면 안된다

 

저수준의 클래스의 기능구현을 위해 고수준의 클래스를 수정하도록 하는 경우를 없게 해야함

 

객체지향 프로그래밍을 할때는 위 5가지 원칙을 위배하지 않토록 노력하자