본문 바로가기

SPRING

[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해2 - 객체 지향 원리 적용]리팩터링, 새로운 구조와 할인 정책 적용 리팩터링 전public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepository());} public OrderService orderService() { return new OrderServiceImpl( new MemoryMemberRepository(), new FixDiscountPolicy());}public class AppConfig { public MemberService memberService() { return new Memb.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해2 - 객체 지향 원리 적용]관심사의 분리 public class AppConfig { // AppConfig라는 클래스를 정의하여 애플리케이션 서비스를 구성합니다. public MemberService memberService() { // MemberService 타입의 객체를 생성하고 반환하는 메서드입니다. return new MemberServiceImpl(new MemoryMemberRepository()); // MemberServiceImpl 객체를 생성하며, 이 때 MemoryMemberRepository 객체를 생성자를 통해 주입합니다. // 이는 의존성 주입의 한 예로, MemberServiceImpl이 MemoryMemberRepository에 의존하지만, 직접 생성하.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해2 - 객체 지향 원리 적용]새로운 할인 정책 적용과 문제점 public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository = new MemoryMemberRepository(); //private final DiscountPolicy discountPolicy= new FixDiscountPolicy(); private final DiscountPolicy discountPolicy= new RateDiscountPolicy(); @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member me.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해2 - 객체 지향 원리 적용]새로운 할인 정책 개발 https://agilemanifesto.org/iso/ko/manifesto.html 애자일 소프트웨어 개발 선언애자일 소프트웨어 개발 선언 우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다. 이 작업을 통해 우리는 다음을 가치 있게agilemanifesto.org// RateDiscountPolicy 클래스 선언public class RateDiscountPolicy implements DiscountPolicy { // 할인율을 나타내는 변수 선언 및 초기화 private int discountPercent = 10; // DiscountPolicy 인터페이스의 discount 메서드 구현 @Override .. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해1 - 예제 만들기]주문과 할인 도메인 실행과 테스트 public class OrderApp {// 'OrderApp'라는 public 클래스를 선언합니다. public static void main(String[] args) { // 'main' 메서드를 선언합니다. 이 메서드는 애플리케이션의 진입점으로, String 배열을 매개변수로 받습니다. MemberService memberService = new MemberServiceImpl(); // 'MemberService' 인터페이스의 구현체인 'MemberServiceImpl'을 인스턴스화하고, 'memberService'라는 변수에 할당합니다. OrderService orderService = new OrderServiceImpl(); /.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해1 - 예제 만들기]주문과 할인 도메인 개발 JAVA만 사용한 할인정책package hello.core.discount;// 이 줄은 패키지 이름을 선언합니다. 패키지는 Java에서 관련된 클래스와 인터페이스를 조직화하는 데 사용됩니다.import hello.core.member.Member;// 'Member' 클래스를 import합니다. 이 클래스는 동일 프로젝트의 다른 패키지에 정의되어 있으며, 'DiscountPolicy' 인터페이스에서 사용됩니다.public interface DiscountPolicy {// 'DiscountPolicy'라는 이름의 public 인터페이스를 선언합니다. 인터페이스는 메서드의 시그니처만을 정의하며, 구현은 이 인터페이스를 구현하는 클래스에서 이루어집니다. /* * @return 할인 대상금액 .. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해1 - 예제 만들기] 주문과 할인 도메인 설계 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 스프링 핵심 원리 이해1 - 예제 만들기]회원 도메인 실행과 테스트 package hello.core.member;// 이 줄은 패키지 이름을 선언합니다. 패키지는 Java에서 관련된 클래스와 인터페이스를 조직화하는 데 사용됩니다.public class MemberApp {// 이 줄은 'MemberApp'이라는 public 클래스를 선언합니다. public static void main(String[] args) { // Java 애플리케이션의 진입점인 'main' 메서드를 선언합니다. 이 메서드는 'String' 배열을 매개변수로 받으며, 프로그램이 실행될 때 실행됩니다. MemberService memberService = new MemberServiceImpl(); // 'MemberService' 인터페이스의 구현체인 'Mem.. 더보기