(인터페이스) (객체명) = new (인터페이스를 구현받은 객체);
상품에 따라 다르게 적용될 discount VO의 구조
DisCountPolicy 인터페이스
모든 discount의 뼈대가 되는 인터페이스이다.
FixDiscountPolicy
위 DisCountPolicy를 상속받아 만들어진 구현 클래스이다.
실행 클래스 구조
AppConfig appConfig = new AppConfig();
MemberService memberService = appConfig.memberService();
이 방법으로 구현할 경우 Spring Been들이 모여있는 appConfig에서 memberService를 찾아온다
혹은
ApplicationContext applicationContext = new AnnocationConfigApplicationContext(AppConfig.class);
Spring에서 어노테이션 기반으로 app을 구현할 경우 AppConfig를 구현한다.
위 방법으로 ApplicationContext 를 구현하면 Spring이 실행될때 매개변수에 작성한 AppConfig.class를 읽어 거기에 명시된 class들 중 어노테이션이 있는 class들을 SpringBeanContainer에 등록하게 되는데
이 SpringBeanContainer 에서 bean객체를 가져오게 된다.
MemberApp
//MemberService memverService = new MemberServiceImpl();
MemberService memberService = applicationContext.getBean("memberService" , MemberService.class);
ApplicationContext에서 bean을 가져오는 방법, //applicationContext.getBean("bean 명칭" , 해당bean의 타입);
MemberServiceImpl는 MemberService인터페이스를 상속받아 만들어진 구현클래스(자식)이다.
Member member = new Member(1L , "memberA" , Grade.VIP);
memberService.join(member);
여기서 member객체를 생성하고
생성한 member객체를 memberService에 넘겨주게 된다.
MemberService의 join은
MemberService 에서 Override되어 있는 MemoryMemeberRepository()의 join을 사용하여
member값을 저장한다,
Member fineMember = MemberService.findMember(1L);
MemberService 에서 Override되어 있는 MemoryMemeberRepository()의 findMember를 사용하여 매개변수 1L에 해당하든 반환값 Member를 저장한 Member들 중에서 찾아온다.,
'SpringBoot' 카테고리의 다른 글
10월 5일 Spring Boot 다형성 설계시 중요한것. (0) | 2022.10.06 |
---|---|
10월4일 Spring Boot OrderApp구현 (0) | 2022.10.05 |
10월2일 Spring Boot Order 객체 (다형성) (0) | 2022.10.03 |
10월1일 Spring Boot Member 객체 (다형성) (0) | 2022.10.02 |
9월29일 Spring Boot 스프링의 객체지향 (0) | 2022.09.29 |