-
Notifications
You must be signed in to change notification settings - Fork 0
Description
8.7 반복자 패턴 (1)
이번 절에 제공된 Java 의 반복자를 기준으로 할 때, 다음 코드와 같이 컬렉션이 동시에 두 개의 반복자를 생성하는 경우, 반복자 중 하나가 remove() 메서드를 호출하여 컬렉션의 요소를 제거하고 난 상태에서 다른 반복자를 계속 사용할 수 있는지 생각해보자. 또한 다른 반복자에서 next() 함수를 호출한 결과는 무엇일지도 고민해보자.
8.8 반복자 패턴 (2)
8.8.3 절에 제공된 두 번째 설계 사상에서 삭제된 요소는 단순히 삭제되었다고 표시될 뿐이며, 반복자가 이 요소를 순회하지 않더라도 실제 배열에는 남아 있는 상태이기 때문에 불필요한 메모리 낭비가 발생하게 된다. 이 문제를 해결할 최적화 방법에는 어떤 것이 있는지 생각해보자.
8.9 비지터 패턴
-
비지터 패턴은 객체와 동작을 분리하는데, 이것이 객체지향 프로그래밍의 캡슐화 특성을 위반하는 것인지 생각해보자.
-
8.9.2 절의 예제 코드에서 SingleDispatchClass 클래스를 다음과 같이 변경하면서 다른 코드는 변경하지 않는다면 DemoMain 클래스의 실행 결과는 어떨지 생각해보자
public class SingleDispatchClass {
public void polymorphismFunction(ParentClass p) {
p.f()
}
public void overloadFunction(ParentClass p) {
p.f()
}
public void overloadFunction(ChildClass c) {
c.f()
}
}8.10 메멘토 패턴
백업은 아키텍처 설계 또는 제품 설계에서 일반적으로 사용된다. 예를 들어 웹 브라우저를 다시 시작할 때 이전에 열린 페이지를 복원하도록 선택할 수 있다.. 이 밖에 다른 응용방법에 대해 생각해보자
8.11 커맨드 패턴
이번 절에서 설계한 모바일 게임 백엔드 서버에서 단일 스레드 패턴을 채택한다면, 멀티코어 시스템에서 CPU 리소스 사용을 어떻게 최대화할 수 있을지 생각해보자.
8.12 인터프리터 패턴
경고 규칙 분석 예제의 표현식에서 ()를 지원하도록 코드를 리팩터링하는 방법을 생각해보자
8.13 중재자 패턴
EventBus 프레임워크를 기반으로 옵서버 패턴을 쉽게 구현할 수 있다. 그렇다면 EventBus 프레임워크를 사용하여 중재자 패턴을 구현할 수 있는지 생각해보자.