
IoC(제어의 역전, Inversion of Control) 기존 프로그램들은 구현 객체가 스스로 객체를 생성하고 연결하며 실행했다. 구현 객체가 프로그램의 제어 흐름을 조종했다. public class AppConfig { public MemberRepository memberRepository() { return new MemoryMemberRepository(); } public DiscountPolicy discountPolicy() { return new FixDiscountPolicy(); } public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } public OrderService or..
SOLID SRP(Single Responsibility Principle): 단일 책임 원칙 OCP(Open/Closed Principle): 개방/폐쇄 원칙 LSP(Liskov Substitution Principle): 리스코프 치환 원칙 ISP(Interface Segregation Principle): 인터페이스 분리 원칙 DIP(Dependency Inversion Principle): 의존관계 역전 원칙 1. SRP(Single Responsibility Principle) 하나의 클래스는 하나의 책임만 가져야 한다. 책임의 범위를 정할 때, 가장 중요한 지표가 되는 것은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것이다. 2. OCP(Open/Closed Pr..
Spring의 핵심 Java의 가장 큰 특징은 객체 지향 언어이다. Spring은 자바 언어 기반의 프레임 워크이다. Spring은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임 워크이다. 즉, Spring은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크다.\ Polymorphism(다형성) 역할과 구현을 분리하는 것이 중요하다. 역할과 구현으로 구분하면 세상이 단순해지고, 유연해지며 변경도 편리해진다. 클라이언트는 대상의 역할(인터페이스)만 알면 된다. 클라이언트는 구현대상의 내부 구조를 몰라도되며, 내부 구조가 변경되어도 영향을 받지 않으며 나아가 구현 대상 자체를 변경해도 영향을 받지 않는다. Java의 다형성을 이용하여 역할과 구현을 분리 역할 = 인터페이스 구현 = 인..