서론 상속은 부모 클래스와 자식 클래스 사이의 의존성이 컴파일 시점에 고정되어 높은 결합도를 가지지만 합성은 두 객체 사이의 의존성이 런타임시점에 고정되어 낮은 결합도를 가지게 됩니다. 상속과 합성은 코드 재사용이라는 동일한 목적을 가지지만 구현 방법부터 변경을 위해 다루는 방식 모두에서 차이점을 가집니다. 상속을 사용하면 자식 클래스가 부모 클래스의 내부 구현까지 자세히 알아야하기 때문에 결합도가 높아지고 캡슐화에 약해집니다. 반면 합성을 사용하면 오직 퍼블릭 인터페이스에만 의존하므로 내부 구현이 변경되더라도 영향을 최소화할 수 있으며 캡슐화를 지킬 수 있습니다. 상속과 합성은 재사용의 대상이 다르다 상속과 합성은 재사용의 대상이 다릅니다. 상속은 부모 클래스의 내부 구현을 재사용하지만 합성은 퍼블릭 ..
서론 객체지향 프로그래밍의 장점 중 하나는 코드를 재사용하기 쉽다는 것입니다. 전통적인 패러다임에서 코드를 재사용하는 방법은 코드를 복사한 후 수정하는 것입니다. 이와 다르게 객체지향은 코드를 재사용하기 위해 "새로운 코드"를 추가합니다. 코드를 재사용하기 위해 새로운 코드를 추가한다? 이 말이 쉽게 와닿지 않을 수 있습니다. 객체지향에서 코드는 일반적으로 클래스 내부에 작성되기 때문에 객체지향에서 클래스를 재사용하는 전통적인 방법은 새로운 클래스를 추가하는 것입니다. 무슨 말인지 모르겠지만 지금부터 천천히 알아보도록 하겠습니다. 상속과 중복 코드 중복 코드는 우리들의 마음속에 의심과 불신의 씨앗을 뿌립니다. 지금 내가 보고 있는 코드가 예전에 본 코드와 비슷하다면 우리는 이거 중복 코드인가? 비슷한 코..
개방 폐쇄 원칙 소프트웨어 개체(클래스, 함수, 모듈 등)는 확장에는 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 합니다. 확장에 대해 열려 있다의 의미 : 애플리케이션의 요구사항이 변경될 때 이 변경에 맞게 새로운 동작을 추가해서 기능을 확장할 수 있다. 수정에 대해 닫혀 있다의 의미 : 기존의 코드를 수정하지 않고도 새로운 동작을 추가하거나 변경할 수 있다. 즉 개방 폐쇄 원칙은 기존의 코드를 수정하지 않고도 애플리케이션의 동작을 확장할 수 있다는 의미입니다. 💡 컴파일타임 의존성을 고정시키고 런타임 의존성을 변경하라 개방 폐쇄의 원칙은 런타임 의존성과 컴파일타임 의존성에 대한 이야기입니다. 런타임 의존성은 실행 시점에서 협력에 참여하는 객체들 사이의 관계이고, 컴파일타임 의존성은 코드 상에서 드..
서론 잘 설계된 객체지향 애플리케이션은 작고 응집도 높은 객체들로 구성되는데 이러한 작고 응집도 높은 객체는 책임의 초점이 명확하고 한 가지 일만 잘하는 객체를 의미합니다. 이런 작은 객체들은 혼자서 수행할 수 있는 일이 거의 없기 때문에 애플리케이션의 기능을 구현하기 위해서는 다른 객체들과 협력을 통해 공통의 목적을 이룹니다. 협력은 객체가 다른 객체에 대해 알것을 강요합니다. 다른 객체와 협력하기 위해서는 그 객체가 존재한다는 사실을 알고 있어야 합니다. 객체지향 설계의 핵심을 협력을 위해 필요한 의존성은 유지하면서도 변경을 방해하는 의존성은 제거하는데 있습니다. 이런 관점에서 객체지향 설계란 의존성을 관리하는 것이고, 객체가 변화를 받아들일 수 있게 의존성을 정리하는 기술이라고 할 수 있습니다. 의..
- Total
- Today
- Yesterday
- java userThread와 DaemonThread
- redis sorted set으로 대기열 구현
- spring boot redis 대기열 구현
- spring boot redisson destributed lock
- spring boot 엑셀 다운로드
- spring boot redisson 분산락 구현
- transactional outbox pattern spring boot
- 자바 백엔드 개발자 추천 도서
- 람다 표현식
- spring boot redisson sorted set
- microkernel architecture
- transactional outbox pattern
- spring boot excel download paging
- JDK Dynamic Proxy와 CGLIB의 차이
- space based architecture
- 레이어드 아키텍처란
- 트랜잭셔널 아웃박스 패턴 스프링부트
- 공간 기반 아키텍처
- pipe and filter architecture
- service based architecture
- redis 대기열 구현
- redis sorted set
- 서비스 기반 아키텍처
- polling publisher spring boot
- spring boot poi excel download
- @ControllerAdvice
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- pipeline architecture
- spring boot excel download oom
- java ThreadLocal
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |