DIP
dipdependency inversion principle
[1] DIP(Dependency Inversion Principle) 구체적인 구현이 아니라 추상화에 의존하도록 하여, 상위 모듈과 하위 모듈이 모두 추상화에 의존하게 만드는 설계 원칙이다.
DIP(Dependency Inversion Principle)
구체적인 구현이 아니라 추상화에 의존하도록 하여, 상위 모듈과 하위 모듈이 모두 추상화에 의존하게 만드는 설계 원칙이다.
[{"slug":"Architecture","title":"Architecture","definition":"시스템의 구성 요소와 구성 요소 간의 관계, 그리고 동작 방식을 정의하는 설계도(청사진)이다.","tags":["아키텍처","architecture","system architecture"],"definitions":[{"title":"시스템 아키텍처(system architecture)","define":"시스템의 구성 요소와 구성 요소 간의 관계, 그리고 동작 방식을 정의하는 설계도(청사진)이다."}]},{"slug":"Coupling","title":"Coupling","definition":"한 객체나 모듈이 다른 객체나 모듈에 얼마나 강하게 의존하고 있는지를 나타내는 정도이다.","tags":["결합도","coupling"],"definitions":[{"title":"결합도(coupling)","define":"한 객체나 모듈이 다른 객체나 모듈에 얼마나 강하게 의존하고 있는지를 나타내는 정도이다."}]},{"slug":"DataSource","title":"DataSource","definition":"API나 DB 같은 특정 데이터 출처와 직접 통신하며, 데이터를 가져오고 저장하는 기술적인 세부사항을 담당한다.","tags":["datasource","data source","데이터소스","데이터 소스"],"definitions":[{"title":"DataSource(데이터 소스)","define":"API나 DB 같은 특정 데이터 출처와 직접 통신하며, 데이터를 가져오고 저장하는 기술적인 세부사항을 담당한다."}]},{"slug":"DI","title":"DI","definition":"객체가 필요로 하는 의존성을 내부에서 직접 생성하지 않고, 외부에서 주입받도록 하는 것이다.","tags":["di","dependency injection"],"definitions":[{"title":"DI(Dependency Injection)","define":"객체가 필요로 하는 의존성을 내부에서 직접 생성하지 않고, 외부에서 주입받도록 하는 것이다."}]},{"slug":"Domain Model","title":"Domain Model","definition":"애플리케이션이 해결하려는 문제 영역의 핵심 개념과 규칙을 표현하는 모델이다.","tags":["domain model","도메인 모델"],"definitions":[{"title":"Domain Model(도메인 모델)","define":"애플리케이션이 해결하려는 문제 영역의 핵심 개념과 규칙을 표현하는 모델이다."}]},{"slug":"DTO","title":"DTO","definition":"계층이나 시스템 사이에서 데이터를 전달하기 위해 사용하는 객체이다.","tags":["dto","data transfer object","데이터 전달 객체"],"definitions":[{"title":"DTO(Data Transfer Object)","define":"계층이나 시스템 사이에서 데이터를 전달하기 위해 사용하는 객체이다."}]},{"slug":"Entity","title":"Entity","definition":"속성 일부가 변하더라도 식별자가 같으면 동일한 대상으로 보는 도메인 객체이다.","tags":["entity","엔티티"],"definitions":[{"title":"Domain Entity(도메인 엔티티)","define":"속성 일부가 변하더라도 식별자가 같으면 동일한 대상으로 보는 도메인 객체이다."},{"title":"Room Entity(Room 엔티티)","define":"Room에서 데이터베이스 테이블의 구조를 표현하는 저장용 모델이다."}]},{"slug":"Hilt","title":"Hilt","definition":"안드로이드에서 DI를 쉽게 구현하도록 구글이 공식적으로 권장하는, Dagger 기반의 DI 라이브러리다.","tags":["hilt"],"definitions":[{"title":"Hilt","define":"안드로이드에서 DI를 쉽게 구현하도록 구글이 공식적으로 권장하는, Dagger 기반의 DI 라이브러리다."}]},{"slug":"IoC","title":"IoC","definition":"객체의 생성과 흐름 제어권을 개발자가 아니라 프레임워크가 갖도록 뒤집는 개념이다.","tags":["ioc","inversion of control"],"definitions":[{"title":"IoC(Inversion of Control)","define":"객체의 생성과 흐름 제어권을 개발자가 아니라 프레임워크가 갖도록 뒤집는 개념이다."}]},{"slug":"Mock","title":"Mock","definition":"테스트에서 실제 구현 대신 끼워 넣는 가짜 객체로, 특정 메서드가 호출됐는지 등을 검증하는 데 쓰인다.","tags":["mock","mocking"],"definitions":[{"title":"Mock(mock object)","define":"테스트에서 실제 구현 대신 끼워 넣는 가짜 객체로, 특정 메서드가 호출됐는지 등을 검증하는 데 쓰인다."}]},{"slug":"MVC","title":"MVC","definition":"애플리케이션을 Model, View, Controller로 나누고, Controller가 View와 Model 사이를 중재하는 아키텍처 패턴이다.","tags":["mvc"],"definitions":[{"title":"MVC(Model-View-Controller)","define":"애플리케이션을 Model, View, Controller로 나누고, Controller가 View와 Model 사이를 중재하는 아키텍처 패턴이다."}]},{"slug":"MVI","title":"MVI","definition":"사용자 입력을 Intent로 표현하고, 이를 처리한 결과를 하나의 State로 만들어 단방향으로 화면을 갱신하는 아키텍처 패턴이다.","tags":["mvi"],"definitions":[{"title":"MVI(Model-View-Intent)","define":"사용자 입력을 Intent로 표현하고, 이를 처리한 결과를 하나의 State로 만들어 단방향으로 화면을 갱신하는 아키텍처 패턴이다."}]},{"slug":"MVP","title":"MVP","definition":"MVC의 Controller 역할을 Presenter로 분리해, Presenter가 View에 UI 갱신을 직접 요청하는 아키텍처 패턴이다.","tags":["mvp"],"definitions":[{"title":"MVP(Model-View-Presenter)","define":"MVC의 Controller 역할을 Presenter로 분리해, Presenter가 View에 UI 갱신을 직접 요청하는 아키텍처 패턴이다."}]},{"slug":"MVVM","title":"MVVM","definition":"ViewModel이 화면 상태를 제공하고, View가 그 상태를 관찰해 스스로 화면을 갱신하는 아키텍처 패턴이다.","tags":["mvvm","architecture","design pattern"],"definitions":[{"title":"MVVM(Model-View-ViewModel)","define":"ViewModel이 화면 상태를 제공하고, View가 그 상태를 관찰해 스스로 화면을 갱신하는 아키텍처 패턴이다."}]},{"slug":"Repository","title":"Repository","definition":"데이터가 어디에서 오는지 감추고, 애플리케이션에 필요한 데이터를 제공하는 데이터 접근 창구이다.","tags":["repository","리포지토리"],"definitions":[{"title":"Repository(리포지토리)","define":"데이터가 어디에서 오는지 감추고, 애플리케이션에 필요한 데이터를 제공하는 데이터 접근 창구이다."}]},{"slug":"SDUI","title":"SDUI","definition":"화면을 어떤 UI로 구성할지를 서버가 결정하고, 클라이언트는 서버가 내려준 정의를 해석해 화면을 그리는 방식이다.","tags":["SDUI","server driven ui","architecture"],"definitions":[{"title":"SDUI(Server Driven UI)","define":"화면을 어떤 UI로 구성할지를 서버가 결정하고, 클라이언트는 서버가 내려준 정의를 해석해 화면을 그리는 방식이다."}]},{"slug":"Smart Cast","title":"Smart Cast","definition":"is나 != null 같은 검사를 통과하면, 그 블록 안에서는 컴파일러가 변수를 자동으로 좁혀진 타입으로 취급한다.","tags":["smart cast","smartcast","스마트 캐스트"],"definitions":[{"title":"Smart Cast(스마트 캐스트)","define":"is나 != null 같은 검사를 통과하면, 그 블록 안에서는 컴파일러가 변수를 자동으로 좁혀진 타입으로 취급한다."}]},{"slug":"UI Model","title":"UI Model","definition":"화면을 표시하는 데 필요한 값과 상태를 표현하는 모델이다.","tags":["ui model","uimodel","UI 모델"],"definitions":[{"title":"UI Model","define":"화면을 표시하는 데 필요한 값과 상태를 표현하는 모델이다."}]},{"slug":"UseCase","title":"UseCase","definition":"애플리케이션에서 수행하는 하나의 행위와 그에 필요한 비즈니스 규칙을 표현한다.","tags":["usecase","use case","유스케이스","유스 케이스"],"definitions":[{"title":"UseCase(유스케이스)","define":"애플리케이션에서 수행하는 하나의 행위와 그에 필요한 비즈니스 규칙을 표현한다."}]},{"slug":"Value Object","title":"Value Object","definition":"별도의 식별자가 아니라 값 자체로 구분되며, 값의 의미와 규칙을 하나의 타입으로 표현하는 객체이다.","tags":["value object","valueobject","값 객체","VO"],"definitions":[{"title":"Value Object(값 객체)","define":"별도의 식별자가 아니라 값 자체로 구분되며, 값의 의미와 규칙을 하나의 타입으로 표현하는 객체이다."}]},{"slug":"ViewModel","title":"ViewModel","definition":"화면에서 발생한 요청을 처리하고, 화면에 필요한 상태를 관리하여 View에 제공하는 구성요소이다.","tags":["viewmodel","view model","뷰모델"],"definitions":[{"title":"ViewModel","define":"화면에서 발생한 요청을 처리하고, 화면에 필요한 상태를 관리하여 View에 제공하는 구성요소이다."}]}]