본문 바로가기

gyub's 공부일기/그저 내 공부

SOLID 원칙

※※   그저 공부하는 흐름대로 작성한 것이니 정돈된 글이 아님 주의 ※※

 

1) SRP: 단일 책임 원칙

객체는 단 하나의 책임만 가져야 한다는 원칙이다.

즉, 데이터를 읽는 부분과 렌더링(읽어온 데이터를 뿌려주는) 되는 부분은 다른 클래스여야한다.

SRP에 따른 설계를 하면 응집도는 높게, 결합도는 낮게 설계할 수 있게 된다.

- 응집도: 해당 기능을 수행하기 위해 얼마만큼의 기능과 아이디어가 뭉쳐있는지를 나타내는 정도

- 결합도: 프로그램 구성 요소들 사이가 얼마나 의존적인지를 말한다.

- 응집도가 낮은 클래스의 문제: 이해하기가 힘들고, 재사용이 힘들다. 또한 유지보수가 매우 쉽지 않으며 클래스 변화에 민감하다.

- 결합도가 높은 클래스의 문제: 클래스의 규모가 커지기 때문에 이해하기 쉽지 않으며, 변화에 따른 다른 요소들의 변경을 예측하기 쉽지 않다.

 

2) OCP: 개방 폐쇄 원칙

기존의 코드를 변경하지 않으면서, 기능을 추가할 수 있도록 설계가 되어야 한다는 원칙.

즉, 확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다는 의미를 가짐.

이를 만족하는 설계가 되려면, 캡슐화를 통해 여러 객체에서 사용하는 같은 기능을 인터페이스에서 정의하는 방법이 있다.

ex) 각 제품의 드론 클래스는 드론 interface를 implements하고 추상 메서드인 날기(), 착지(), 상하좌우조작() 메서드를 오버라이드 해서 자기 입맛에 맞게 메서드를 재정의하면 된다.

 

3) LSP: 리스코프 치환 원칙

자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다는 설계 원칙

즉, 자식 클래스는 언제나 부모 클래스의 역할을 대체할 수 있어야 한다는 것을 말하며, 부모 클래스와 자식 클래스의 행위가 일관됨을 의미한다.

 

4) ISP: 인터페이스 분리 원칙

자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 설계 원칙.

즉, 하나의 거대한 인터페이스보다는 여러 개의 구체적인 인터페이스가 낫다는 것을 의미

SRP는 객체의 단일 책임원칙을 뜻한다면, ISP는 인터페이스의 단일 책임을 의미.

 

5) DIP: 의존 역전 원칙

객체들이 서로 정보를 주고 받을 때 의존 관계가 형성되는데

이 때 객체들은 나름대로의 원칙을 갖고 정보를 주고 받아야 한다는 설계 원칙

추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 것을 의미.

 

 

 

 

반응형

'gyub's 공부일기 > 그저 내 공부' 카테고리의 다른 글

Synchronized  (0) 2021.04.08
Serialization  (0) 2021.04.08
오버라이딩과 오버로딩  (0) 2021.04.03
interface 사용 이유  (0) 2021.04.03
자바에서 클래스 다중상속을 막은 이유  (0) 2021.04.03