-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
6-1. 싱글턴 패턴 (1) 생각해보기
public class Demo {
private UserRepo userRepo; // 생성자 또는 IoC 컨테이너를 통한 의존성 주입
public boolean validateCachedUser(long userId) {
User cachedUser = CacheManager.getInstance().getUser(userId);
User actualUser = userRepo.getUser(userId);
// 주요 로직 생략
}
}CacheManager가 싱글턴 패턴인데, 리팩터링 시 코드의 변경을 최소화하면서 테스트 용이성을 향상 시키는 방법이 무엇이 있을까?
6-2. 싱글턴 패턴 (2) 생각해보기
Java의 경우 엄밀히 말하면 싱글턴 패턴의 유일성의 범위는 프로세스 안이 아닌 클래스 로더 안에 있다. 왜 그런지 생각해보자.
6-3 팩터리 패턴 (1) 생각해보기
- 팩터리 패턴은 보편적인 디자인 패턴인데, 팩터리 패턴을 사용중인 라이브러리들을 찾아보고 그 예시를 찾아보자.
- 단순 팩터리 패턴은 객체를 생성하는 메서드가 정적 메서드이기 때문에 정적 팩터리 메서드 패턴이라고 한다. 이와 같이 객체를 생성하는 메서드가 정적이어야 하는 이유와 이때 코드의 테스트 용이성에 어떤 영향을 미치는가?
6-4 팩터리 패턴 (2) 생각해보기
BeansFactroy 클래스의 createBean() 함수는 재귀 함수인데, 이 함수의 매개변수가 ref 유형이면 ref 속성이 가리키는 객체를 재귀적으로 생성한다. 설정 파일에서 객체 사이의 의존성을 잘못 설정하여 의존성이 순환하게 된 경우, BeansFactory 클래스의 createBean() 함수에 스택 오버 플로가 발생할 가능성이 있는지 생각해보고, 가능성이 있다면 해결방법이 무엇일까
6-5 빌더 패턴 생각해보기
public class A {
private boolean isRef;
private Class type;
private Object arg;
// TODO 개선해보자
}이런 상황에서 isRef가 true이면 arg를 설정해야 하지만, type은 설정할 필요가 없고, isRef가 false이면 arg와 type 모두 설정해야 하는데 이런 요구 사항에서 위 클래스를 어떻게 개선해야 할까?
6-6 프록시 패턴 생각해보기
- 키워드의 삭제도 지원해야 한다면 어떻게 구현을 해야 할까?
- ShoppingCart 클래스의 getItems() 메서드를 통해 items 컬렉션을 얻으며, 컬렉션 내의 ShoppingCartItem 개별 객체의 데이터를 수정할 수 있기 때문에 이 설계에 문제가 있는데 이 문제를 어떻게 해결할 수 있을까?
Metadata
Metadata
Assignees
Labels
No labels