package hello.core.singleton; public class MemberService { /*1*/private static final MemberService instance = new MemberServiceImpl(memberRepository); /*2*/public static MemberService getInstance(){return instance;} /*3*/private memberService(){} }
@Test @DisplayName("싱글톤 패턴 적용한 객체 사용") void singletonServiceTest(){ MemberService instance1 = MemberService.getInstance(); MemberService instance2 = MemberService.getInstance(); System.out.println("instance1 = " + instance1); System.out.println("instance2 = " + instance2); //인스턴스가 같은지 비교하기위해 isSameAs 사용한다! assertThat(instance1).isSameAs(instance2); }
모르는 부분1.싱글톤 패턴을 적용해서 테스트 코드작성해보면 MemberService.getInstance()로 MemberService의 getInstance를 호출해서 인스턴스를 생성하는 것 같다. 그런데 MemberService는 인터페이스인데 인터페이스의 메서드에 접근해서 인스턴스를 생성할 수 있나? 객체 지향 프로그래밍의 상속 개념에 따르면 그럴 수 없다고 한다.
객체 지향 프로그래밍
인터페이스와 상속 개념 공부하기
=> 인터페이스의 메서드에 접근할 수 없다!?
Last updated 3 years ago