본문 바로가기

Design

객체지향 5대 원칙 SOLID 객체 지향 설계의 정수라고 할 수 있는 5대 원칙으로 SOLID가 있다. 아래 원칙들은 응집도는 높이고, 결합도는 낮추는 고전 원칙을 객체지향의 관점에서 재정립 한 것이다. SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open Closed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) : 의존 역전 원칙 SOLID는 제품이 아닌 개념이기에, 보는 사람의 관점에 따라 다르게 해석 될 수 있다. SRP - 단일 책임 원칙 Sing.. 더보기
Layered Architecture in DDD Layered Architecture의 목적 관심사의 분리. 각 계층간의 관심사를 분리하기 위함이다. 기술과 로직이 분리가 안돼있다면 유지관리가 힘들다. 핵심원칙 같은 계층, 아래 계층 요소에만 의존한다. (상위계층에 의존하지 않는다) Layer 종류 User Interface Layer Application Layer Domain Layer Infrastructure Layer User Interface Layer(사용자 인터페이스 계층 or 표현 계층) 사용자에게 정보를 보여주고, 사용자의 명령을 해석한다. 유일하게 사용자가 접근 가능한 계층이다. Application Layer(응용 계층) 소프트웨어가 수행할 작업을 정의하고, 도메인이 문제를 해결하게 한다. 업무규칙, 지식은 포함되지 않는다. 도메.. 더보기
Entity, VO, DTO 엔티티 Entity 엔티티는 식별 가능한 객체이다. 쉽게말해 식별자를 가지고 있는 객체이다.이 식별자는 소프트웨어 생애 주기 내에 동일하게 유지된다.다른 말로 '연속적으로 식별성을 가진다', '모델의 생명주기를 가진다' 라고 할 수 있겠다. 식별자는 엔티티마다 고유해서 각 엔티티는 서로 다른 식별자를 가진다. 엔티티의 속성이 변경되더라도 한번 생성된 엔티티는 동일한 엔티티이다. 엔티티는 모델 스스로 처리 가능한 비즈니스 로직을 수행하는 역할을 한다. 아래 코드를 보자. public class Entity { private final long id; private String name; public Entity(long id, String name) { this.id = id; this.name = nam.. 더보기