CS/Design Pattern

SOLID principles

dawonny 2022. 3. 16. 02:44
728x90
반응형
SOLID principles

 

Single Responsibility

Open-Closed

Liskov Substitution

Interface Segregation

Dependency Inversion


Single Responsibility Principle(SRP)(단일 책임 원칙)
: 단일 책임 원칙이란 모든 클래스는 하나의 책임만 가져야함.

 

- 클래스 구현할 때 한가지 기능에만 중점을 두기.

  두가지 이상의 기능이 필요할 때에는 클래스 나누기

- 장점 : 특정기능 수정할 때 관련 클래스 외에는 건드릴 필요 없음.

- 한 개의 클래스에 여러 기능이 있었다면(SRP 지키지 않았다면)?

  관련된 모든 클래스 수정해야하는 상황 발생 가능

- add 함수는 덧셈만 함

- numPrint 함수는 숫자 출력만 함

- addPrint는 SRP 안지킴


Open-close Principle(OCP, 개방-폐쇄 원칙)
: 소프트웨어 개체(클래스, 모듈, 함수 등)는 확장에 대해 열려있어야하고, 수정에 대해서는 닫혀 있어야 한다.

 

기능이 추가 되어도 수정이 필요하지 않은 코드가 OCP를 만족!


Dependency Inversion Principle(의존관계 역전 원칙)

 

- 소프트웨어 모듈들을 분리하는 특정 형식을 지칭

- 이 원칙을 지키면 상위 계층이 하위 계층에 의존하는 전통적인 의존관계역전 시킴으로써

  상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있음. 

 동물원  : high level

 

 고양이, 강아지, 양, 소 : low level

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Zoo 클래스는 Cat, Dog 클래스들에 의존관계가 있음.

동물 늘어나면 Zoo 클래스 계속 수정해야함

 

수정한다면?

의존 관계가 Animal 추상클래스에 의해 역전되었고,

Zoo 클래스는 각 Cat, Dog 클래스로부터 독립됨.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Liskov Substitution principle

: 컴퓨터 프로그램에서 자료형 S가 자료형 T의 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는 업무)의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 교체(치환)할 수 있어야 한다는 원칙 

->Fish 관련된 클래스는 따로 설계해야 함(처음 설계할 때부터 고려했어야)

 


Interface Segregation(인터페이스 분리 원칙)

: 클라이언트가 자신이 이용하지 않는 메소드에 의존하지 않아야 한다

 

큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리 -> 클라이언트들이 꼭 필요한 메소드만 이용하도록

 

728x90
반응형