Total

OCP? OCP(Open Closed Principle) : 소프트웨어 객체는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 이게 무슨말이냐... 후 그러니까 음.. 내가 B라는 기능을 추가하고 싶을 때, A라는 원본 Code가 바뀌어서는 안된다는 의미입니다. 계산기를 예로 들자면, 덧셈(+) 기능의 계산기가 있을 때, 뺄셈(-)을 구현할 때 덧셈을 손대지 마라는 말입니다. 쪼금 이해가 되셨을까요.? 이 글을 검색하셨다면, 이미 훌륭한 Coder이니까 바로 Code로 살펴볼께요!! Code 예시 예시로 설명을 시작하겠습니다! 저는 웹 프로그래머에요. 그래서 내가 만든 Web Application에서 URL을 매핑하는 모듈을 만들고 싶었습니다. Controller에서 url을 Mapp..
SRP? SRP(Single Responsibility Principle) : 단일 책임의 원칙 클래스를 설계할 때 하나의 책임만을 수행하는데에 집중되어 있어야 한다는 원칙! 무슨말인지 모르시겠죠..? 현실세계를 예를 들자면, 학생(Student)이라는 객체가 있다고 가정해봅시다. 학생(Student)는 대학생이라서 수강신청을 해야되는데, 학생이 스스로 수강과목(Course)를 고르는 행동이 존재하겠죠? 학생(Student)이 과목(Course)을 고르는 행위는 수강신청과정에서의 학생 이라는 SRP를 준수하는 행위입니다. 하지만, 학생(Student)이 수강과목(CourseName)을 변경한다는 행위를 가정해볼까요? 학생은 수강과목 리스트를 돌면서 바꾸고 싶은 과목이 있다면, 해당 수강과목을 바꾸는 행위..
Doubly Linked List? - Linked List(연결리스트)에서 삽입과 삭제가 일어날 때, 좀 더 편리하게 이용하기 위한 자료구조 - 이전 Node를 가리키는 prev 포인터와 다음 Node를 가리키는 next 포인터를 가지고 있는게 핵심이다 구현 방법에는 참 여러가지가 있겠지만, 편리한 구현을 위해 작성자는 head와 tail을 dummy로 설정하여 구현하였다! 왜냐하면, 편하기 때문이다 ^8^ ( 아닐수도 있어요... ㅎㅎ ) public class DoublyLinkedList { private class Node { private int val; private Node next; private Node prev; Node(final int val) { this.val = val; th..
Composite Pattern? - 단일 객체든, 객체 집합이든, 같은 방법으로 취급하여 다루는 디자인 패턴 - 트리 구조와 상당히 유사한 성격을 가지고 있다. - 클라이언트 전체와 부분을 구별하지 않고, 동일한 인터페이스로 사용한다! 구성 요소 Component : 구체적인 부분 -> 공통 Interface로 선언 Leaf : 구체적인 부분 클래스 -> Interface를 상속받은 객체 Composite : 여러 개의 Component를 가지는 객체 -> Leaf의 집합 * 정말 트리 구조와 유사하지 않나요? * 아닌거 같다면 죄송.. 실제 코드 간단하게 여러분들에게 설명하기 위해서 Code로 작성해보았어요! 우선, 가정을 하나 둘게요. Cafe라는 Domain을 지정해서 설명해볼까 해요 회사를 그만..
Command Pattern? - 커맨드 패턴(Command Pattern)은 Client가 보낸 요청을 객체로 캡슐화하여 이를 나중에 이용할 수 있도록 필요한 정보를 저장, 로깅, 취소할 수 있게 하는 패턴입니다. * 한마디로, 요청을 객체로 감싸서 관리하겠다는 말입니다 * 예시를 통해서 한번 이해해볼까요? 리모컨을 디자인 해달라는 의뢰를 받았습니다. 리모컨에서는 여러 기능들이 있겠죠. 에어컨을 키거나, 선풍기를 키거나, 음악 플레이어를 재생하거나 등 여러 가지 기능이 있습니다. 하지만 리모컨의 입장에서는 내가 무엇을 수행해야하는지 알 필요가 있을까요? 그저 어떤 버튼을 눌렀고, 어떻게 실행될지 알기만 하면 됩니다. 그렇게 되면 정보의 은닉(캡슐화)이 가능해집니다! 구성 요소 - 커맨드 패턴에서는 다음..
Adapter Pattern? - 어댑터 패턴 : 서로 간의 호환성이 없는 인터페이스를 함께 동작할 수 있게 해주는 디자인 패턴 예를 들어, Ethernet Port와 USB Port가 있다고 가정해보자! 둘간의 Port는 절대로 같이 연결할 수 없다. 하지만, 중간고리 역할(Adapter)이 있다면 둘 간의 연결은 가능해진다! Why Adpater? 그럼 어떨 때 Adapter 패턴을 적용하고, 왜 써야 할까? Client는 Target 인터페이스만 알면, 실체화된 Adapter 객체가 알아서 로직을 흐르게 해준다! Adapter는 Adaptee를 이용하여 요청에 대한 결과를 반환하게 된다! Client의 입장에서 Target에서의 Adaptee의 존재를 눈치채지 못하고 숨길 수 있다! 한마디로, 엄~..
huisam
'분류 전체보기' 카테고리의 글 목록 (14 Page)