본문 바로가기
반응형

전체 글82

스프링 핵심 원리 - (7) 스프링으로 전환 @Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(getMemberRepository()); } ​ @Bean public MemberRepository getMemberRepository() { return new MemoryMemberRepository(); } ​ @Bean public OrderService orderService() { return new OrderServiceImpl(getMemberRepository(), discountPolicy()); } ​ @Bean public DiscountPolicy discoun.. 2022. 8. 5.
스프링 핵심 원리 - (6) SOLID SRP 단일 책임 원칙 클라이언트는 실행하는 책임만 AppConifg가 구현하고 연결하는 책임 DIP 의존 관계 역전 원칙 클라이언트가 인터페이스 + 구현체를 의존하는 것이 아닌, 인터페이스만 의존 구현체가 없어 실행이 불가능 (NPE) AppConifg를 생성하여 클라이언트에 구현체 의존성을 주입 OCP 개방 폐쇄 원칙 AppConfig의 구현체만 갈아끼면 동작 변경 가능(서비스 로직 변경X) 새로운 구현체가 생성(확장)되어도 사용 영역의 소스는 변경되지 않는다. IoC, DI, 컨테이너 IoC (제어의 역전) 기존에선 클라이언트가 구현체까지 의존하여 실행했다. AppConfig이후엔 클라이언트는 로직만 실행하게 됐다. 프로그램의 제어 흐름은 AppConfig가 관리 이처럼 프로그램의 제어 .. 2022. 8. 4.
스프링 핵심 원리 - (5) 관심사의 분리 배우(구현체)는 본인의 배역(인터페이스) 구현에만 집중 특정 배우는 상대 배우가 누가 됐든 같은 역할을 수행해야한다. 배역에 어떤 배우를 섭외할 지, 공연 기획자가 필요하다 공연기획자를 만들고. 배우와 기획자의 책임을 분리하자 AppConfig : 실제 사용할 구현체를 지정 public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepository()); } public OrderService orderService() { return new OrderServiceImpl( new MemoryMemberRepository(), new FixDiscoun.. 2022. 8. 4.
스프링 핵심 원리 - (4) 새로운 정책 등장 악덕 기획자: 서비스 오픈 직전에 할인 정책을 지금처럼 고정 금액 할인이 아니라 좀 더 합리적인 주문 금액당 할인하는 정률% 할인으로 변경하고 싶어요. 예를 들어서 기존 정책은 VIP가 10000원을 주문하든 20000원을 주문하든 항상 1000원을 할인했는데, 이번에 새로 나온 정책은 10%로 지정해두면 고객이 10000원 주문시 1000원을 할인해주고, 20000원 주문시에 2000원을 할인해주는 거에요! 순진 개발자: 제가 처음부터 고정 금액 할인은 아니라고 했잖아요. 악덕 기획자: 애자일 소프트웨어 개발 선언 몰라요? “계획을 따르기보다 변화에 대응하기를” 순진 개발자: … (하지만 난 유연한 설계가 가능하도록 객체지향 설계 원칙을 준수했지 후후) 새로운 할인 정책 구현체 pub.. 2022. 8. 3.
728x90
반응형