개방 폐쇄 원칙 소프트웨어 개체(클래스, 함수, 모듈 등)는 확장에는 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 합니다. 확장에 대해 열려 있다의 의미 : 애플리케이션의 요구사항이 변경될 때 이 변경에 맞게 새로운 동작을 추가해서 기능을 확장할 수 있다. 수정에 대해 닫혀 있다의 의미 : 기존의 코드를 수정하지 않고도 새로운 동작을 추가하거나 변경할 수 있다. 즉 개방 폐쇄 원칙은 기존의 코드를 수정하지 않고도 애플리케이션의 동작을 확장할 수 있다는 의미입니다. 💡 컴파일타임 의존성을 고정시키고 런타임 의존성을 변경하라 개방 폐쇄의 원칙은 런타임 의존성과 컴파일타임 의존성에 대한 이야기입니다. 런타임 의존성은 실행 시점에서 협력에 참여하는 객체들 사이의 관계이고, 컴파일타임 의존성은 코드 상에서 드..
서론 잘 설계된 객체지향 애플리케이션은 작고 응집도 높은 객체들로 구성되는데 이러한 작고 응집도 높은 객체는 책임의 초점이 명확하고 한 가지 일만 잘하는 객체를 의미합니다. 이런 작은 객체들은 혼자서 수행할 수 있는 일이 거의 없기 때문에 애플리케이션의 기능을 구현하기 위해서는 다른 객체들과 협력을 통해 공통의 목적을 이룹니다. 협력은 객체가 다른 객체에 대해 알것을 강요합니다. 다른 객체와 협력하기 위해서는 그 객체가 존재한다는 사실을 알고 있어야 합니다. 객체지향 설계의 핵심을 협력을 위해 필요한 의존성은 유지하면서도 변경을 방해하는 의존성은 제거하는데 있습니다. 이런 관점에서 객체지향 설계란 의존성을 관리하는 것이고, 객체가 변화를 받아들일 수 있게 의존성을 정리하는 기술이라고 할 수 있습니다. 의..
서론 사람들은 한 번에 해결하기 어려운 커다란 문제를 맞닥뜨릴 경우 이 문제를 해결 가능한 작은 문제로 나누는 경향이 있다고 합니다. 이렇게 나눠진 문제들 역시 한 번에 해결하기 어렵다면 또다시 더 작은 문제로 나눌 수 있습니다. 이처럼 큰 문제를 해결 가능한 작은 문제로 나누는 작업을 분해라고 합니다. 프로시저 추상화와 데이터 추상화 프로그래밍 언어를 통해 표현되는 추상화의 발전은 다양한 프로그래밍 패러다임의 탄생으로 발전했는데 프로그래밍 패러다임은 프로그래밍을 구성하기 위해 사용하는 추상화의 종류와 이 추상화를 이용해 소프트웨어를 분해하는 방법의 두 가지 요소로 결정됩니다. 프로그래밍 패러다임이란 적절한 추상화의 윤곽을 따라 시스템을 어떤 식으로 나눌것인지를 결정하는 원칙과 방법의 집합입니다. 여기에..
서론 훌륭한 객체지향 코드를 얻기 위해서는 클래스가 아닌 객체에 초점을 맞춰야 합니다. 또한 객체에 초점을 맞추되 협력 안에서 수행하는 객체의 책임에 초점을 맞추어야 합니다. 객체지향에서 가장 중요한 것은 객체들 간에 주고받는 메시지입니다. 객체들은 메시지 전송자로부터 메시지를 수신하기 위해 퍼블릭 인터페이스를 구성하고 있습니다. 협력과 메시지 💡 클라이언트-서버 모델 협력은 어떤 객체가 다른 객체에게 무언가를 요청할 때 시작됩니다. 메시지는 객체 간의 협력을 가능케 하는 매개체입니다. 객체가 다른 객체에게 접근할 수 있는 유일한 방법은 메시지를 통해 접근하는 것입니다. 클라이언트-서버 모델이란? 협력 안에서 메시지를 전송하는 객체를 클라이언트, 메시지를 수신하는 객체를 서버라고 부릅니다. 협력은 클라이..
- Total
- Today
- Yesterday
- 공간 기반 아키텍처
- spring boot poi excel download
- spring boot redisson destributed lock
- java ThreadLocal
- spring boot redisson 분산락 구현
- pipe and filter architecture
- JDK Dynamic Proxy와 CGLIB의 차이
- spring boot excel download oom
- 레이어드 아키텍처란
- 트랜잭셔널 아웃박스 패턴 스프링부트
- service based architecture
- spring boot redis 대기열 구현
- polling publisher spring boot
- spring boot 엑셀 다운로드
- transactional outbox pattern spring boot
- redis 대기열 구현
- redis sorted set
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- 람다 표현식
- space based architecture
- redis sorted set으로 대기열 구현
- @ControllerAdvice
- 서비스 기반 아키텍처
- 자바 백엔드 개발자 추천 도서
- java userThread와 DaemonThread
- spring boot redisson sorted set
- pipeline architecture
- spring boot excel download paging
- microkernel architecture
- transactional outbox pattern
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |