Solid

DIP? DIP는 다음과 같은 정의를 가지고 있습니다 상위 모듈은 하위 모듈에 의존해서는 안된다 추상화는 세부 사항에 의존해서는 안된다 정말 아무리봐도 무슨말인지 모르겠죠? 조금 쉽게 설명하자면 DIP의 핵심은 의존 관계를 맺을 때 변화하기 쉬운 것에 의존하기보다는, 변화하지 않는 것에 의존하라는 원칙입니다! 현실 세계를 예로 들어 볼까요 내가 PayService를 개발하고 싶은 개발자라고 가정해봅시다 Pay수단에는 되게 여러가지 방법이 있겠죠? SamsungPay, KaKaoPay, NaverPay ... 기타 등등 그러면 개발자의 입장에서 위 Pay수단중에서 하나 골라서 사람들에게 Service를 제공한다고 가정합시다. 하지만 사람들의 요구사항에 의해서 다른 Pay수단들도 추가해달래요! 초기 설계때 ..
ISP Interface Segregation Principle(인터페이스 분리 원칙) : 클라이언트가 자신이 이용하지 않는 메서드에 의존하면 안된다는 원칙 역시나 이번에도 도통 무슨 말인지 모르시겠죠? ㅎㅎ 그래서 조금 쉽게 설명드리면~! 특정 객체(클래스)에 대한 책임을 덜어드리는 것이 목표에요! 다시 말해서 기능을 쪼개고 쪼개서 클래스가 단 하나의 책임(SRP)을 지니게 하는 것을 도와줍니다! 현실세계를 예로 들어볼까요? 제가 스마트폰을 개발하는 담당자 라고 가정해봅시다 지금 갤럭시1 이라는 객체(클래스)에는 전화, MP3, 인터넷 기능만 존재했어요 하지만 버젼 업그레이드를 계속 진행하면서 갤럭시2를 출시하게 됬는데, MP3 기능이 빠지고 동영상 기능이 들어가서 전화, 동영상, 인터넷 기능만 존재하..
LSP? 리스코프 치환 원칙 - 자료형 S가 자료형 T의 하위형이라면 필요한 프로그램의 속성의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 치환할 수 있어야 한다는 원칙 역시나 설명글은 너무나 어렵죠? 이젠 익숙하시죠 ㅎㅎ 다시 말해서, 상속을 설명하고 있습니다 부모객체와 자식객체가 있다고 가정할 때, 자식은 당연히 부모 객체로 치환할 수 있어야 합니다! 어려우니까 직사각형과 정사각형을 예로 들어볼게요 어렸을 때 수학을 배웠던 기억에 따르면, 정사각형은 직사각형이죠? 왜냐하면 정사각형은 직사각형의 성질을 그대로 가지고 있기 때문입니다! 그래서, 정사각형을 직사각형으로 표현할 수 있게 되는 것입니다! 그러면 바로 예시 코드로 넘어가볼까요~? Code 우리는 도형이란 도메인을 지정하겠습니다. 거기에는 ..
OCP? OCP(Open Closed Principle) : 소프트웨어 객체는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 이게 무슨말이냐... 후 그러니까 음.. 내가 B라는 기능을 추가하고 싶을 때, A라는 원본 Code가 바뀌어서는 안된다는 의미입니다. 계산기를 예로 들자면, 덧셈(+) 기능의 계산기가 있을 때, 뺄셈(-)을 구현할 때 덧셈을 손대지 마라는 말입니다. 쪼금 이해가 되셨을까요.? 이 글을 검색하셨다면, 이미 훌륭한 Coder이니까 바로 Code로 살펴볼께요!! Code 예시 예시로 설명을 시작하겠습니다! 저는 웹 프로그래머에요. 그래서 내가 만든 Web Application에서 URL을 매핑하는 모듈을 만들고 싶었습니다. Controller에서 url을 Mapp..
huisam
'Solid' 태그의 글 목록