객체지향 설계 5원칙
- SRP(Single Responsibility Principle) - 단일 책임 원칙
- OCP(Open-Closed Principle) - 개방-폐쇄 원칙
- LSP(Liskov Substitution Principle) - 리스코프 치환 원칙
- ISP(Interface Segregation Principle) - 인터페이스 분리 원칙
- DIP(Dependency Inversion Principle) - 의존관계 역전 원칙
이번에 알아볼 것은 SOLID의 S인 SRP(Single Responsibility Principle) - 단일 책임 원칙에 대해 알아볼 것이다.
모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 한다.
클래스가 제공하는 모든 기능은 이 책임과 주의 깊게 부합해야한다.
- WIKIPEDIA -
SRP 예시
가장 적절한 예시로 스위치를 골라봤다. 닌텐도 스위치가 아니라 방마다 달려있는 스위치를 말한다.
class Switch {
String on(){
return 'Switch On';
}
String off(){
return 'Switch Off';
}
}
스위치의 기능은 On, Off 기능 밖에 가질 수 없다고 생각한다. 전원을 키고, 끄는 것 밖에 없는 스위치가 단일 책임 원칙에 적절하다. 다른 기능이 들어오는 순간 단일 책임 원칙에 위배 되기 때문이다. 그리고 On, Off 기능만 있어서 유지보수도 매우 쉽다.
만약 스위치만의 기능외에 다른 기능이 들어오게 된다면 Switch 클래스를 사용하는 곳에서 문제가 발생할 수 있게 될 것이다. 그래서 한 객체에 섞여 있던 것을 다른 클래스로 분리 함으로써 변경의 여파를 줄일 수 있게 된다.
느낀점
예시를 간단한 스위치로 하니까 굉장히 이해하기 쉬웠다. 예시는 확실히 기억에 남을거 같은데 개념은 아직 외우려고 해야할거 같다.
내가 생각한 대로 정리하고 간략하게 하려고 하다보니 글 하나 쓰는데 몇일이 걸린지 모르겠다. 그래도 이렇게라도 정리를 해서 내 것으로 만들어 두고 공부해야겠다.
'TIL > 잡학다식' 카테고리의 다른 글
[잡학다식] 의존관계 역전 원칙(DIP: Dependency Inversion Principle) (0) | 2022.07.22 |
---|---|
[잡학다식] 인터페이스 분리 원칙(ISP: Interface Segregation Principle) (0) | 2022.07.18 |
[잡학다식] 리스코프 치환 원칙(LSP: Liskov Substitution Principle) (0) | 2022.07.13 |
[잡학다식] 개방-폐쇄 원칙(OCP: Open-Closed Principle) (0) | 2022.07.11 |
[잡학다식] 객체지향 설계원칙 - SOLID (0) | 2022.06.29 |