오늘도 더 나은 코드를 작성하였습니까?

객체지향 설계 원칙(SOLID) 본문

Android Jetpack Architecture/Introduction and Overview

객체지향 설계 원칙(SOLID)

hik14 2020. 8. 5. 02:58

객체지향 설계 원칙(SOLID)

1. 단일 책임 원칙(Single Responsibility Principle)

- 모든 클래스는 하나의 책임을 가지며 그 책임을 완전히 캡슐화해야 된다.

- 클래스가 제공하는 모든 기능은  책임과 연관되어 있다.

- 모듈, 클래스, 메서드는 단 하나의 기능을 가져야 한다.

- 수정을 하거나 에러가 나면 고치기 쉽다.

 

2. 개방- 폐쇄의 원칙(Open Closed Principle)

- 확장에 대해 열려 있다.

 

모듈의 동작을 쉽게 확장할 수 있다는 것을 의미한다. 애플리케이션의 요구 사항이 변경될 때, 이 변경에 맞게 새로운 동작을 추가해 모듈을 확장할 수 있다. 추후 변경사항이 발생하더라도 다른 코드나 모듈에 영향이 없도록 한다는 것.

 

- 수정에 대해 닫혀 있다.

 

어떤 모듈의 동작을 확장하는 것이 그 모듈의 소스 코드의 변경으로 이어지는 것은 아니다. 한 클래스의 변경이 의존관계를 가지는 다른 클래스의 변경으로 이어지지 말아야 한다.

 

요약하자면 특정 모듈에 쉽게 새로운 동작을 추가 하기는 쉬우나 이 동작을 추가 함으로써 모듈 내에 다른 부분이 수정을 하면 안 된다는 것이다. 그러면 재사용성과 유지보수가 매우 쉽다.

3. 리스 코프 치환의 원칙(Liskov Substitution Principle)

-  클래스 A가 클래스 B의 하위 클래스라면 별 다른 변경사항 없이 상위 클래스 A를 하위 클래스 B로 바꿀 수 있다.  즉, 상위 타입 -> 하위 타입으로 다운 캐스팅된 객체가 코드에서 논리적으로 문제가 없어야 된다.

 

4. 인터페이스 분리의 원칙(Interface Segregation Principle)

- 특정 클래스가 자신이 사용하지 않는 메서드에 의존하지 말아야 된다.

- 큰 덩어리의 인터페이스들을 구체적이고 작은 단위로 분리함으로써 클래스들이 꼭 필요한 메서드 들만 이용한다.

 

5. 의존 역전 원칙(Dependency Inversion Principle)

- 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 된다.

 

- 추상화는 세부사항에 의존해서는 안된다 세부사항이 추상화에 의존해야 된다.

 

- 상위 모듈(자동차) 하위 모둘(스노 타이어)