iOS 공부하는 감자

Day22) 객체지향 설계의 5가지 원칙 SOLID 본문

22 베이직 챌린지

Day22) 객체지향 설계의 5가지 원칙 SOLID

DongTaTo 2022. 1. 24. 20:52
반응형

SOLID 원칙은 객체지향 설계에 있어서 더 좋은 아키텍처를 설계하기 위해 지켜지면 좋을 5가지 원칙을 앞 글자만 가져와서 나타낸 것이다.

 

SOLID는 다음의 약자이다.

  • S (Single Responsibility Principle) : 단일 책임 원칙
  • O (Open / Close Principle) : 개방/폐쇄 원칙
  • L (Liscov Substitution Principle) : 리스코프 치환 원칙
  • I (Interfate Segregation Principle) : 인터페이스 분리 원칙
  • D (Dependency Inversion Principle) : 의존관계 역전 원칙

 

 

S (Single Responsibility Principle) : 단일 책임 원칙

  • 클래스는 하나의 책임만 가져야 한다.
  • 클래스의 수정 이유는 단 하나여야 한다.
  • 동일한 책임이 여러 개의 클래스에 나뉘어 있으면 안된다.
  • 하나의 클래스 내부에 협력관계가 여러 개 있는 것은 가능하다.

 

O (Open / Close Principle) : 개방/폐쇄 원칙

  • 확장에는 열려있고, 변경에는 닫혀 있어야 한다.
  • 기능을 추가할 때 기존 코드는 변경하지 않고 확장해야 한다.

 

L (Liscov Substitution Principle) : 리스코프 치환 원칙

  • 부모 클래스는 자식 클래스로 대체 가능해야 한다.
  • 부모 클래스의 자리에 자식 클래스를 대신 사용해도 문제없이 돌아가야 한다.
  • 자식 클래스는 부모 클래스의 동작을 바꾸지 않는다.

 

I (Interfate Segregation Principle) : 인터페이스 분리 원칙

  • 클래스 내에서 사용하지 않는 인터페이스는 구현하지 않는다.
  • 클라이언트는 자신이 이용하지 않는 메서드에 의존하지 않아야 한다.
  • 큰 덩어리의 인터페이스들을 구체적이고 작은 단위로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드만 이용할 수 있도록 한다.

 

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

  • 상위 모듈은 하위 모듈에 의존하면 안 된다.
  • 상위, 하위 모듈은 모두 추상화에 의존해야 한다.
  • 추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다.

 

 

 

 


 

 

+ 시간초과로 성공하지 못했던 알고리즘 문제를 Big-O와 해시 테이블 개념을 공부한 후 코드를 수정해서 통과했다.

그냥 별 생각 없이 사용하던 Dictionary가 해시 함수를 사용한다는 사실도 새로 알게 되었고, 요소의 크기가 커질수록 해시 테이블이 일반 배열에 비해 얼마나 빠르게 동작하는지 체감했다. (코드 실행 시간이 압도적으로 단축됨..!)

 

앞으로 알고리즘 문제를 풀 때 Dictionary를 잘 사용하면 아주 유용할 것 같아서 Day3의 내용을 조금 보완(?)했다.

https://co-dong.tistory.com/6

 

Day3) 배열, 딕셔너리, 세트, 열거형 + 알고리즘

배열(Array) 배열의 특징 동일한 자료형만 저장 가능 배열 내부의 값은 순서가 있음 (index / zero based) 순서가 있는 값들을 저장할 때 유용 배열 선언방식 let someArray: [Int] let someArray2: Array 배열에..

co-dong.tistory.com

 

반응형