본문 바로가기
반응형

Programming/Architecture5

Circular Dependency(순환 의존성)과 해결법 Circular Dependency 이슈Circular Dependency(순환 의존성)란 두 개 이상의 모듈, 클래스, 또는 컴포넌트가 서로를 참조하여 의존 관계가 순환하는 상태를 말한다. (ex. 모듈 A가 모듈 B를 참조하고, 모듈 B가 다시 모듈 A를 참조하는 경우)주로 DI(의존성 주입) 구현을 위해 생성자를 주입하다가 설계 오류로 발생할 수 있다.    이러한 순환 의존성은 다음과 같은 문제를 야기할 수 있으므로 소프트웨어 아키텍처 설계에 있어 주의가 필요하다. 코드 유지보수 어려움: 의존 관계가 복잡해지면, 변경 사항이 다른 모듈에 미치는 영향을 추적하기 힘들다. A 클래스를 변경하는 경우 참조하는 클래스를 모두 변경한 뒤 다시 돌아와 A클래스에 다시 영향을 미칠 수 있다.테스트 어려움: 단.. 2024. 11. 12.
DI(의존성 주입)이란? / reflection(리플렉션) 개념 Dependency Inject (DI/의존성 주입)의존성 주입이란 객체 간의 의존성을 관리하는 디자인 패턴으로, 객체의 생성과 사용의 관심을 분리하는 것이 주된 목적이다.객체가 필요로 하는 의존성을 외부에서 주입하여 생성하게 되며코드의 재사용성이 향상 되고, 테스트 용이성은 높이며, 코드의 유지 관리가 용이해진다. 코드 재사용성 향상: 컴포넌트 간의 결합도가 낮아지면, 각 컴포넌트를 독립적으로 재사용 할 수 있다.테스트 용이성: 테스트 시에 실제 객체 대신 모의 객체를 주입할 수 있어, 테스트를 보다 쉽게 수행 할 수 있다.코드 유지 관리 용이성: 의존성이 명확하게 분리되어 있으면, 코드를 이해하고 수정하기 쉬워진다. 예를 들어 객체 A가 객체 B에 의존하고 있을 때, 객체 B를 A의 생성자 또는 메서.. 2024. 11. 12.
[Architecture] MVC, MVP, MVVM Pattern 아키텍처 패턴 (Architecture Pattern) 아키텍처 패턴은 공통적으로 자주 발생하는 문제를 재사용 가능하도록 패턴화한 것이다. 4대 아키텍처 현대에는 4개의 주요 아키텍처를 사용한다. MVC (Model-View-Controller) MVP (Model-View-Presenter) MVVM (Model-View-ViewModel) MVI (Model-View-Intent) MVC 패턴 MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인패턴이다. 뷰(view) 사용자 인터페이스 - UI 구성 모델(Model) 애플리케이션의 데이터 - data 저장 - 비즈니스 로직의 집합 (data 처리) 컨트롤러(Controller) view-model 사이의 .. 2024. 1. 13.
SDK vs API SDK(System Development Kit) SDK는 프로그래머가 다양한 플랫폼용 애플리케이션을 구축하는 데 필요한 소프트웨어 도구와 앱이 포함된 키트이다. 여기에는 디버거, 컴파일러, 코드 라이브러리, API, IDE 등 앱 모듈을 만드는 데 필요한 모든 것이 포함된다. 어떤 언어를 대상으로 하던지에 상관없이 SDK가 있을 수 있지만, 대상이 되는 특정 플랫폼이 존재하므로 해당 SDK가 어떤 목적을 가지는 지 파악하는 것이 중요하다. 완벽하진 않지만, 쉽게 비유를 하자면 컨테이너 박스로 이뤄진 하나의 주상복합 건물로 표현할 수 있다. 각각의 컨테이너 박스에는 식당과 세탁소, 편의점 등 여러 시설이 있다고 생각해보자. 의사소통만 통한다면 어떤 인종이 오든 물건을 구매하거나 밥을 먹을 수 있을 것이다.. 2023. 4. 11.
프레임워크(Framework) vs 라이브러리(Library) 프레임워크 (Framework) Frame (틀/규칙) + Work (일)의 합성어로, 어떠한 일을 하기 위한 뼈대/구조를 의미한다. 소프트웨어의 전체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게 하는 것이 목적이다. 따라서 애플리케이션 개발 시 필수적인 코드와 DB 커넥션 등의 기본 기능들을 제공하며, 개발자는 이러한 뼈대 위에서 추가적인 개발을 하는 것으로 기능을 추가할 수 있다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분을 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래스, 메서드들을 구현하면 된다. 한 번쯤 들어봤을 JAVA 서버 개발의 Spring 웹 개발에 사용되는 Angular, Vue.js 등도 모두 프레임워크의 일종이다. 이해를 쉽게 하기 .. 2023. 4. 11.
반응형