본문 바로가기

DIP2

스프링 - 관심사의 분리 feat. DI, AppConfig, SOLID 애플리케이션을 하나의 공연이라 생각해보자. 각각의 인터페이스를 배역이라 생각하자. 그런데! 실제 배역 맞는 배우를 선택하는 것은 누가 하는가? 로미오와 줄리엣 공연을 하면 로미오 역할을 누가 할지 줄리엣 역할을 누가 할지는 배우들이 정하는게 아니다. 로미오 역할(인터페이스)을 하는 레오나르도 디카프리오(구현체)가 줄리엣 역할을 하는 여자 주인공(구현체)을 직접 초빙하는건 DIP원칙에서 벗어난다. public class OrderServiceImpl implements OrderService{ /*인터페이스*/ /*구현체*/ private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); ... } /* 로미오 역할을 디카프리오는 (OrderS.. 2022. 4. 14.
스프링 - 스프링과 객체지향 설계 feat. 다형성, SOLID 들어가기에 앞서... 스프링과 객체지향 설계를 제대로 이해하기 위해서 필요한 2가지 다형성 객체지향 설계의 5가지 원칙 (SOLID) 1. 다형성 스프링의 핵심 스프링은 자바 기반의 프레임워크이다. 자바 언어의 가장 큰 특징은 객체 지향 언어라는 점이다. 스프링은 객체지향 언어가 가진 강력한 특징을 살려내는 프레임워크이다. 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크이다. 객체지향 특징 추상화 캡슐화 상속 다형성 객체지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 또한 객체지향 프로그래밍은 프로그램을 유연하고 변경.. 2022. 4. 13.