[BOOK : 오브젝트 15장] 디자인 패턴과 프레임워크
·
BOOK
0. 서론 소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법을 디자인 패턴이라고 한다.  디자인 패턴은 다양한 변경을 다루기 위해 반복적으로 재사용할 수 있는 설계의 묶음이다. 디자인 패턴이 설계를 재사용하기 위한 것이라면 프레임워크는 설계와 코드를 함께 재사용하기 위한 것이다.  프레임워크는 애플리케이션의 아키텍처를 구현 코드의 형태로 제공한다. 프레임워크가 제공하는 아키텍처가 요구사항에 적합하다면 다양한 환경에서 테스트를 거친 견고한 구현 코드를 쉽고 빠르게 재사용할 수 있다.  디자인 패턴과 프레임워크 모두 협력을 일관성 있게 만들기 위한 방법이다.   1. 디자인 패턴과 설계 재사용 소프트웨어 패턴 패턴은 반복적으로 발생하는 문제와 해법의 쌍으로 정의된다. ..
Throttling과 debounce에 대해 알아보자
·
Spring
서론 최근 링크드인을 시작하며 여러 가지 정보들을 많이 받고 있다. 링크드인을 통해 영상을 보던 도중 현재 내가 진행하였던 푸시 알림 서비스 관련하여 debounce를 적용하여 구현하셨다는 인터뷰 영상을 접하였고, 해당 개념을 한번 살펴보며 예제를 작성해보고 어떤 식으로 사용할 수 있을지 찾아보며 공부를 진행해보았다. 공부를 진행하며 해당 개념에 대해 다시 한번 정리해보고자 포스팅을 작성하게 되었다. 해당 포스팅에서는 다음과같은 항목들을 다뤄보려고 한다. 스로틀링이란? 디 바운스란? 두 개념의 공통점과 차이점 예제 코드 결론 참고 ref 쓰로틀링 ( throttling ) API가 서버에서 사용되는 속도를 제한하는 프로세스로서, 단위 ( 초 , 분... )에 실행할 수 있는 서비스 요청 수를 제한한다. ..
[BOOK : 오브젝트 14장] 일관성 있는 협력
·
BOOK
이번 장에서는 코드를 통해 협력에 대한 예제들을 보여주고 있었다.  이번 장과 15장을 끝으로 오브젝트 1회독은 마무리하게 된다. 이 책을 읽으며 많이 배우기도 하였지만 이번 정독을 끝으로 두는 것이 아닌 한번 더 읽어보며 내가 얼마만큼 더 이해할 수 있는지 더 확인해보려고 한다.  0. 서론 객체는 협력을 위해 존재한다.협력은 객체가 존재하는 이유와 문맥을 제공한다.잘 설계된 애플리케이션은 이해하기 쉽고, 수정이 용이하며 재사용 가능한 협력의 모임이다.객체지향 설계의 목표는 적절한 책임을 수행하는 객체들의 협력을 기반으로 결합도가 낮고 재사용 가능한 코드 구조를 창조하는 것이다.  유사한 요구사항을 계속 추가해야 하는 상황에서 각 협력이 서로 다른 패턴을 따를 경우 전체적인 설계의 일관성이 서서히 무너..
[BOOK : 오브젝트 13장] 서브클래싱과 서브타이핑
·
카테고리 없음
0. 서론 상속의 첫 번째 용도는 타입 계층을 구현하는 것이다. 부모 클래스는 자식 클래스의 일반화(generalization)이고 자식클래스는 부모 클래스의 특수화(specialization)다. 상속의 두번째 용도는 코드 재사용이다. 재사용을 위해 상속을 사용할 경우 부모 클래스와 자식 클래스가 강하게 결합되기 때문에 변경하기 어려운 코드를 얻게 될 확률이 높다. 동일한 메시지에 대해 서로 다르게 행동할 수 있는 다형적인 객체를 구현하기 위해서는 객체의 행동을 기반으로 타입 계층을 구성해야 한다. 상속의 가치는 이러한 타입 계층을 구현할 수 있는 쉽고 편안한 방법을 제공한다는데 있다. 객체 지향 프로그래밍이란 클래스를 사용하는 프로그래밍 방식을 의미하고 객체기반 프로그래밍이란 클래스 없이 오직 객체만..
많이 배우고 깨우친 11월의 회고
·
회고
벌써 11월의 한 달이 저물어가고 있다. 11월은 내 생일도 있었고 여러 가지 많이 느낀 한 달이었다. 11월까지의 생활들을 돌아보며 한달동안의 회고를 다시 한번 작성해보려고 한다! 객체지향 스터디 10월 말부터 오브젝트 책을 읽고 스터디를 진행하며 꾸준히 업로드를 하며 진행해보자!라는 마음으로 시작하였는데 벌써 15챕터 중 12 챕터까지 진행을 하였다. 책을 읽으며 느낀 점들을 링크드인에 업로드할 때마다 항상 올렸는데 정말 많이 배우고 느낀 점 들이 많았다. 현재 내가 해야하는 스터디가 무엇인지를 알고, 어떤 방향으로 나아가야 하는지를 스터디를 진행하며 알게 되었던 좋은 경험들이었다. 현재 연차에서 내가 할 수 있고 정말 필요한 부분이 무엇인지를 깨우칠 수 있었던 시간이 되었지 않았나라는 생각을 조심스..
[BOOK : 오브젝트 12장] 다형성
·
카테고리 없음
다형성 많음을 의미하는 'poly'와 형태를 의미하는 'morph'의 합성어로 '많은 형태를 가질 수 있는 능력'을 의미한다. 객체지향 프로그래밍에서 사용되는 다형성은 그림과 같이 나눌 수 있다. 오버 로딩 다형성 일반적으로 하나의 클래스 안에 동일한 이름의 메서드가 존재하는 경우를 카리 킨다. 강제 다형성 언어가 지원하는 자동적인 타입 변환이나 사용자가 직접 구현한 타입 변환을 이용해 동일한 연산자를 다양한 타입에 사용할 수 있는 방식을 가리킨다. 오버 로딩 다형성 일반적으로 하나의 클래스 안에 동일한 이름의 메서드가 존재하는 경우를 가리킨다. 유사한 역할을 하는 메서드지만 시그니처가 다른 경우 사용한다. 매개변수 다형성 제네릭 프로그래밍과 관련이 깊다. 변수나 메서드의 매개변수 타입을 임의의 타입으..
[BOOK: 오브젝트 11장] 합성과 유연한 설계
·
BOOK
서론 상속과 합성은 객체지향 프로그래밍에서 가장 널리 사용되는 코드 재사용 기법을 이야기한다. 상속이 부모 클래스와 자식 클래스를 연결해서 부모 클래스의 코드를 재사용하지만, 합성은 전체를 표현하는 객체가 부분을 표현하는 객체를 포함해 부분 객체의 코드를 재사용한다.  상속관계는 is - a라고도 불리고, 합성 관계는 has-a 관계라고 부른다.  여러 가지 내용이 있지만, 이는 결국 하나를 이야기하고 있는 것 같았다.   객체의 합성이 상속보다 더 좋은 방법이다. 상속을 합성으로 변경하기 코드 재사용을 위한 상속 남용시 발생하는 세 가지는 다음과 같다. 불필요한 인터페이스 상속 문제 메서드 오버라이딩의 오작용 문제 부모 클래스와 자식 클래스의 동시 수정 문제  포워딩 ( forwarding ) 오퍼레이..
[BOOK: 오브젝트 10장] 상속과 코드 재사용
·
BOOK
DRY ( Don't Repeat Yourself ) 원칙 모든 지식은 시스템 내에서 단일하고, 애매하지 않고, 정말로 믿을 만한 표현 양식을 가져야 한다. DRY (Don't Repeat Yourself)는 '반복하지 마라'라는 뜻 중복 코드는 변경을 방해한다. 코드를 수정하는 데 필요한 노력을 몇배로 증가시킨다. 중복 여부를 판단하는 기준은 변경요구사항이 변경됐을 때 두 코드를 함께 수정해야 한다면 이 코드는 중복이다.한번, 단 한번( Once and Only Once ) 원칙 또는 단일 지점 제어 (Single-Point Controller ) 원칙이라고도 한다.  중복과 변경 중복코드는 새로운 중복코드를 부르고, 버그 발생 가능성도 높아진다. 민첩하게 변경하기 위해서는 중복 코드를 추가하는 대신 ..