Skip to content

CHAPTER 8 행동 디자인 패턴 - 3 #11

@audxo112

Description

@audxo112

8.7 반복자 패턴 (1)

이번 절에 제공된 Java 의 반복자를 기준으로 할 때, 다음 코드와 같이 컬렉션이 동시에 두 개의 반복자를 생성하는 경우, 반복자 중 하나가 remove() 메서드를 호출하여 컬렉션의 요소를 제거하고 난 상태에서 다른 반복자를 계속 사용할 수 있는지 생각해보자. 또한 다른 반복자에서 next() 함수를 호출한 결과는 무엇일지도 고민해보자.

8.8 반복자 패턴 (2)

8.8.3 절에 제공된 두 번째 설계 사상에서 삭제된 요소는 단순히 삭제되었다고 표시될 뿐이며, 반복자가 이 요소를 순회하지 않더라도 실제 배열에는 남아 있는 상태이기 때문에 불필요한 메모리 낭비가 발생하게 된다. 이 문제를 해결할 최적화 방법에는 어떤 것이 있는지 생각해보자.

8.9 비지터 패턴

  1. 비지터 패턴은 객체와 동작을 분리하는데, 이것이 객체지향 프로그래밍의 캡슐화 특성을 위반하는 것인지 생각해보자.

  2. 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 프레임워크를 사용하여 중재자 패턴을 구현할 수 있는지 생각해보자.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions