전체 글

전체 글

    [Spring] 서비스는 트랜잭션, 도메인의 순서 보장 역할만 제공한다

    [Spring] 서비스는 트랜잭션, 도메인의 순서 보장 역할만 제공한다

    서론 스프링에서는 @Controller, @Service, @Repository 등의 애노테이션을 사용하여 웹 계층을 분리하고 있다. 이 중 @Service는 사실상 @Component와 기능 차이가 없지만, 스프링에게 해당 클래스가 서비스 레이어 클래스라는 것을 알리는 역할을 한다고 한다. 그렇다면 Service Layer는 무슨 역할을 하는 걸까. 3 tier 아키텍처 보통 스프링 프로젝트는 3 tier 방식으로 구성한다. 프레젠테이션 계층 화면에 보여주는 기술을 사용하는 영역. 컨트롤러에서 사용자의 요청에 맞는 응답처리를 진행하며, HTML엔진(thymeleaf), HTML등이 담당하는 영역. Spring MVC 객체로, 컨트롤러, DispatcherServlet, 컨트롤러, 뷰, 모델이 포함된다...

    객체지향의 사실과 오해

    객체지향의 사실과 오해

    Summary 생각 대학교에서 객체지향 수업을 들을 때, 보통 절차지향과 비교한다. 절차지향은 코드를 작성한 순서대로 프로그램이 진행되고, 객체지향은 객체와 객체 간의 상호작용을 통해 프로그램이 진행된다고. 그러면서 곧바로, 현실 물체를 프로그램 코드인 객체로 변신시키는 게 객체지향의 핵심이고, 원리는 캡슐화, 상속, 추상화, 다형성이 있고, 그 뒤 곧바로 c++의 문법에 대해 배웠던 것 같다. 결국 대학교를 졸업하고 한참 뒤에야, 이 책을 읽으면서 객체지향이란 무엇인가를 곰곰이 되뇌이게 되었다. 본 책을 통해서 간단히 객체지향이 왜 나오게 되었는가, 객체지향을 왜 쓰는가, 객체지향 방식으로 애플리케이션을 설계하려면 어떻게 해야하는 가 등을 알게 되었다. 마치 수학 공식처럼, 단순히 객체지향의 원리를 달..

    [Design Pattern] Composite Pattern (컴포지트 패턴)

    [Design Pattern] Composite Pattern (컴포지트 패턴)

    출처 : https://www.inflearn.com/course/디자인-패턴 컴포지트 패턴 (Composite Pattern) 그룹 전체와 개별 객체를 동일하게 처리할 수 있는 패턴. 클라이언트 입장에서는 전체나 부분이나 모두 동일한 컴포넌트로 인식할 수 있는 계층 구조를 만든다. (Part-Whole Hierarchy) 장점 복잡한 트리 구조를 편리하게 사용할 수 있다. 다형성과 재귀를 활용할 수 있다. 클라이언트 코드를 변경하지 않고 새로운 엘리먼트 타입을 추가할 수 있다. 단점 트리를 만들어야 하기 때문에 (공통된 인터페이스를 정의해야 하기 때문에) 지나치게 일반화 해야 하는 경우도 생길 수 있다. 예시 (as-is) public class Item { private String name; pri..

    [Design Pattern] 전략 패턴 (Strategy Pattern)

    출처 : https://www.inflearn.com/course/디자인-패턴 전략 패턴 (Strategy Pattern) 여러 알고리즘을 캡슐화하고 상호 교환 가능하게 만드는 패턴. 클라이언트가 직접 컨텍스트에서 사용할 알고리즘을 선택한다. 생성자에서, 혹은 특정 Operator에서 알고리즘을 선택해서 넘겨줄 수 있다. 장점 새로운 전략을 추가하더라도 기존 코드를 변경하지 않는다. OCP를 완벽하게 지키고 있다. 상속은 한 객체만 가능한데, 이 대신 위임을 사용할 수 있다. 런타임에 전략을 변경할 수 있다. 단점 복잡도가 증가한다. 클라이언트 코드가 구체적인 전략을 알아야 하기 때문에, 의존성이 생긴다. 예시 (as-is) public class BlueLightRedLight { private int..