본문 바로가기

용어정리/#SOLID

(6)
용어정리-[#SOLID] 6.DIP [ DIP ]의존 역전 원칙, Dependency Inversion Principle 2018 - 06 - 01 "고차원 모듈은 저차원 모듈에 의존하면 안 된다.이 두 모듈 모두 다른 추상화된 것에 의존해야 한다." "추상화된 것은 구체적인 것에 의존하면 안 된다.구체적인 것이 추상화된 것에 의존해야 한다." "자주 변경되는 구체(Concreate) 클래스에 의존하지 마라" -로버트 C. 마틴 자동차와 스노우타이어 사이에는 다음과 같은 의존 관계가 있다. 자동타가 스노우타이어에 의존한다.자동차는 한번 사면 몇 년은 타야 하는데스노우타이어는 계절이 바뀌면 일반 타이어로 교체해야 한다. 이런 경우 스노우타이어를 일반 타이어로 교체할 때자동차는 그 영향에 노출돼 있음을 알 수 있다. 영향을 개선해보자 자동차가..
용어정리-[#SOLID] 5.ISP [ ISP ]인터페이스 분리 원칙, Interface Segregation Principle 2018 - 05 - 31 단일 책임 원칙 ( SRP ) 를 다시 살펴 보자단일 책임 원칙에서 제시한 해결책은남자 클래스를 하나의 역할만 하는 클래스로 분할 하는 것이었다.그런데 꼭 그 방법뿐일까? 만약 남자를 토막 내는 것이 너무 잔인하다는 생각이 든다면 그때 선택할 수 있는 방법이 바로ISP 즉, 인터페이스 분할 원칙이다. 인터페이스 분할 원칙이 제시하는 해결책을 다음 그림을 통해 알아보자. 남자 클래스를 토막 내는 것이 아니라 다중 역할화 시켜여자친구를 만날 때는 남자친구 역할만 할 수 있게 인터페이스로 제한하고,어머니와 있을 때는 아들 인터페이스로 제한하고,직장상사 앞에서는 사원 인터페이스로 제한하고,소대..
용어정리-[#SOLID] 4.LSP [ LSP ]리스코프 치환 법칙, Liskov Substitution Principle 2018 - 05 - 31 "서브 타입은 언제나 자신의 기반 타입(base type) 으로 교체할 수 있어야 한다." 계층도 조직도의 경우 하위에 존재하는 것들이 상위에 있는 것들의 역할을 하는게 불가하다. 분류도인 경우에 하위에 존재하는 것들은 상위에 있는 것들의 역할을 하는 데 전혀 문제가 없다. 고래가 포유류 또는 동물의 역할을 하는 것은 전혀 문제가 되지 않는다. 객체 지향의 상속이라는 특성을 올바르게 활용하면 자연스럽게 얻게 되는 것이다. 출처 스프링 입문을 위한 객체 지향의 원리와 이해
용어정리-[#SOLID] 3.OCP [ OCP ]개방 폐쇄 원칙, Open Closed Principle 2018 - 05 - 31 "소프트웨어 엔티티( 클래스, 모듈, 함수 등 )는 확장에 대해서는 열려 있어야 하지만변경에 대해서는 닫혀 있어야 한다." - 로버트 C. 마틴 자신의 확장에는 열려 있고 주변의 변화에는 닫혀 있어야 한다. OCP의 아주 좋은 예로 JDBC가 있다JDBC를 사용하는 클라이언트는 데이터베이스를 오라클에서 MySQL로 변경한다 해도 connection 부분만 변경해 주면 된다.conntection 부분을 별도의 파일로 분리해둔다면 클라이언트 파일 소스는 단 한줄도 건드릴 필요가 없다. JDBC 뿐만 아니라 iBaits MyBatis 하이버네이트 등 다양한 데이터베이스 프로그래밍을 지원하는 프레임워크와 라이브러리에..
용어정리-[#SOLID] 2.SRP [ SRP ]단일 책임 원칙 2018 - 05 - 29 "어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다." - 로버트 C.마틴 한 개의 클래스에 의존하는 다양한 클래스가 있다고 가정해보자남자는 피곤할 듯 하다 피곤함의 원인은 역할과 책임이 너무 많이 부여되어 있기 때문이다.객체지향에서는 이런 것을 나쁜 냄새가 난다고 한다.예를 들어 여자친구와 헤어졌다고 해 보자남자는 더 이상 챙길 일 없는 기념일과 대상이 없는 키스하기를 하기 힘들어한다. 거기에 더해 여자친구 없는 스트레스를 온 세상에 뿌리고 다니니어머니, 직장상사, 소대장님까지 피곤한 지경에 이르게 되고야 만다. 따라서 이런 경우에 역할( 책임 ) 을 분리하라는 것이 단일 책임 원칙이다. 각 관계는 서로간의 관계에 어떠한 영향을 받지 않는..
용어정리-[#SOLID] 1.SOLID [ SOLID ]객체지향설계5원칙 2018 - 05 - 29 객체 지향 설계 ( Object Oriented Design ) 의 정수 5원칙 = SOLID 마이클 페더스( Michael Feathers ) 가 2000년대 초반 객체 지향 프로그래밍 및 설계다섯가지 기본 원칙을 두문자어로 소개 SOLID는 각 원칙의 머리 알파벳을 따서 부르는 이름이다 SRP(Singe Responsibility Principle) : 단일 책임 원칙OCP(Open Closed Principle) : 개방 폐쇄 원칙LSP(Liskow Substituion Principle) : 리스코프 치환 원칙ISP(Interface Segregation Principle) : 인터페이스 분리 원칙DIP(Dependency Inversi..