-
객체지향 디자인 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
The S.O.L.I.D Principles in Pictures
If you are familiar with Object-Oriented Programming, then you’ve probably heard about the SOLID principles.
medium.com
https://wkdtjsgur100.github.io/solid-principle/
객체지향 디자인의 5원칙(SOLID 원칙)
좋은 객체지향 설계를 위해서는 다음의 5가지 원칙을 따르는 것이 좋고, 다음의 원칙들을 기반으로 디자인 패턴이 되기 때문에,디자인 패턴을 공부하기 전에 알아두면 왜 그 패턴이 좋은 패턴인지에 대해서 좀 더 깊게 이해할 수 있다.
wkdtjsgur100.github.io
https://limkydev.tistory.com/77
http://www.nextree.co.kr/p6960/
객체지향 개발 5대 원리: SOLID
현재를 살아가는 우리들은 모두 일정한 원리/원칙 아래에서 생활하고 있습니다. 여기서의 원칙 이라 함은 좁은 의미로는 개개인의 사고방식이나 신념, 가치관 정도가 될 수가 있겠고, 넓게는 한 국가의 통치 이념이나 통치 방법 정도가 되겠습니다. 그럼 우리는 왜 이런 원칙들 아래에서 생활하고 있는 걸까요? 이거다라고 단정할 수는 없지만 그건 아마도 그런 원칙들이
www.nextree.co.kr
JAVA - UpCasting(업캐스팅)
저번 포스팅은 캐스팅에 관해 전반적으로 다루었다. 아래의 URL은 이전 포스팅 내용이다. http://mommoo.tistory.com/40 이전 포스팅 내용을 요약하자면 아래와 같다. 자료형이 정해진 변수에 값을 넣을때는 변수..
mommoo.tistory.com
[8][JAVA][자바] 기초 변수, 참조 변수
자바에서 변수는 기초 변수와 참조 변수로 구분됩니다. int, double, char 등(자료형)으로 선언된 변수를 ...
blog.naver.com
반응형'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