-
객체지향 디자인 5원칙 (SOLID)Domain knowledge 2019. 9. 18. 00:34반응형
객체지향 디자인 5원칙 (SOLID)는 응집도를 높이고 결합도를 낮추기 위해 사용하는 디자인 원칙이다.
S - SRP(Single responsibility principle) 단일 책임 원칙
클레스는 하나의 기능, 하나의 역활을 가진다.
어떤 클레스를 만드는데 있어 관련책임을 주어야한다.
EX> UI와 작동의 분리 , API 통신과 리스트 갱신과의 분리
O - OCP(Open Closed Principle) 개방 - 폐쇄 원칙
확장에 대해서는 개방 , 수정에 대해서는 폐쇄 되어 있어야 한다.
EX> 부모클레스 또는 인터페이스에서 기능을 선언 후 해당기능은 하위의 클레스에서 Override하여 기능을 정의하는 경우
L - LSP(Liskov Substitusion Principle) 리스코프 치환 법칙
자식 클레스는 부모 클레스를 교환 할 수 있다.
자식 클레스를 Upcasting 하여도 객체참조변수는 논리적으로 역활에 문제가 없어야 한다.
EX> val 치킨 = 닭() as 조류 (TODO 맞는 예인지 모르겠다 쫌더 좋은 예가 필요하다)
I - ISP(Interface Segregation Principle) 인터페이스 분리 원칙
어떤 기능 또는 클레스는 자신이 사용하지 않는 기능(인터페이스)에 대해서 의존성을 가지지 말아야 한다.
클라이언트는 자신이 사용하지 않는 메서드에 의존관계를 맺으면 안된다.
필요한 기능들을 각각 인터페이스로 구현하고 필요한 인터페이스만 impliment하여 해당 class에서 필요한 funtion들만 정의하여 사용한다.
D - DIP(Dependency Inversion Principle) 의존성 역전 법칙
상위클레스는 하위클레스에 의존성을 가지지 말아야 한다.
안좋은 예> 부모 activity의 context를 자식 activity가 받고 다시 자식activity의 context를 부모activity가 가지는 것이다.
[참고링크]
medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
https://wkdtjsgur100.github.io/solid-principle/
https://limkydev.tistory.com/77
http://www.nextree.co.kr/p6960/
반응형'Domain knowledge' 카테고리의 다른 글
핸드셰이킹 (handshake) (0) 2020.11.10 FLOPS (Floating point operations per second) (0) 2020.10.05 클린 아키텍처(Clean Architecture) (0) 2020.01.18 JAVA String 객체 와 String 리터럴(literal) (0) 2019.10.16 러너블(Runnable)이란? (0) 2019.10.05 함수(Funtion)와 메소드(Method)의 차이 (0) 2019.09.21 BIG-O Notation (빅오표기법) (0) 2019.09.18 GC(Garbage Collection) 가비지 컬렉터 (0) 2019.08.27