오늘은 싱글톤 방식의 주의점에 대해 공부한다
싱글톤 방식은 여러 클라이언트가 하나의 같은 객체 인스턴스를 공유하기 때문에 싱글톤 객체는 상태를 stateful(유지)하게 설계하면 안된다
- 특정 클라이언트에 의존적인 필드가 있으면 안된다
- 특정 클라이언트가 값을 변경할 수 있는 필드가 있으면 안된다
- 가급적 읽기만 가능해야 한다
singleton 패키지에 StatefulService 클래스 생성하기
singleton 패키지에 StatefulServiceTest 클래스 생성하기
테스트 실행하기
- 원하는 price 결과값은 10000원인데 20000원이 출력되었다
- 다른 값을 넣어도 같은 객체 인스턴스를 공유하기 때문에 값이 달라졌다
StatefulService 수정하기
- int형으로 return 해서 변경하지 못하게 만든다
StatefulServiceTest 수정하기
- userAPrice, userBPrice로 지역변수로 받아서 사용한다
테스트 실행하기