본문 바로가기
General CS

객체 지향 프로그래밍의 5원칙 SOLID

by 리나그(ReenAG) 2024. 2. 17.
728x90
반응형

 강의를 듣다 보니까 개인적으로 필기해 두는 게 좋을 것 같아서 여기다가 간단하게 노트처럼 적는다.

S. Single Responsibility Principle - 단일 책임의 원칙

어떤 객체는 한번에 한 가지 책임을 져야 한다. 이는 굉장히 모호하지만 해당 객체에 변경이 있을 경우 다른 객체에 주는 영향이 작을 수록 좋다는 것을 기준으로, 그때 마다 판단한다.

O. Open-Close Principle - 개방-폐쇄의 원칙

 객체는 확장에는 열려있되, 개방에는 폐쇄적이어야한다. 다형성을 활용하면 인터페이스/구현체를 분리하므로 확장하는 방향으로 개발하기가 쉬워진다. 다만, 다형성만으로는 해당 원칙을 완벽하게 지킬 수 없는게 결국 구현체를 선택하는 부분에 있어서 의존성이 발생해서 해당 부분의 코드를 수정해야하기 때문이다.

L.  Liskov Substitution Principle - 리스코프 치환 원칙

 프로그램의 객체는 자신의 하위 인터페이스로 문제없이 바뀔 수 있어야한다. 이는 단순하게 다형성을 이용해서 컴파일하라는 이야기가 아니라 실제로 인터페이스에서 이런 동작을 해야한다는 일종의 규약을 준수하라는 것이다. 영어로는 intention, 의도에 맞게 구현체를 만드는 것을 말하는 것이라 생각된다.

I. Interface Segregation Principle - 인터페이스 분리의 원칙

 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 1개보다 낫다는 원칙. 1번과도 어느 정도 연관은 있지만 조금 다른 뉘앙스가 있다면 역할을 제대로 분리해서 대체 가능성을 높이는데 방점이 있는 듯 하다.(하는 건 같은데 결국 다른 장점 2개를 얻는 건가? 싶다)

D. Dependency Inversion Principle - 의존관계 역전의 원칙

 프로그래머는 추상화에 의존해야하며, 구체화에 의존해서는 안된다. 단순하게 인터페이스 위주로 코딩한다고 생각하면 편하다. 다만 이는 앞의 2번 원칙과 비슷한 이유로 다형성 만으로는 해당 원칙을 지킬 수가 없다.

 

 그런 이유로, 인터페이스는 좀체 수정할 일이 없게끔 탄탄하게 설계하는 것이 좋은 객체 지향 개발자다... 라고 함.

728x90
반응형

'General CS' 카테고리의 다른 글

[AWS 배포 연구] - Code Pipeline - 해결 안됨...  (0) 2024.04.11