템플릿 메소드 예제

ComputerBuilder 클래스는 마더보드 및 프로세서와 같은 다른 구성 요소를 추가하고 설정하는 방법을 선언하여 컴퓨터를 빌드하는 데 필요한 단계를 요약합니다. 긍정적 인 의견을 주셔서 감사합니다. 저는 저자입니다. 예제에서는 lambda 식을 사용하여 패턴을 구현하는 방법을 보여 줍니다. 모든 단계가 추상화되면 괜찮습니다. 그러나 일부 단계는 기본 구현을 통해 이점을 얻을 수 있습니다. 하위 클래스는 이러한 메서드를 구현할 필요가 없습니다. 템플릿 메서드는 각 도메인 아키텍처의 고정 부분을 구현 하는 프레임 워크에서 사용 됩니다., 사용자 지정 옵션에 대 한 «자리 표시자»를 떠나. 위의 예제는 주문 처리 흐름을 다룹니다.

OrderProcessTemplate 클래스는 알고리즘 스켈레톤을 포함하는 추상 클래스입니다. note에 표시된 것처럼 processOrder()는 프로세스 단계를 포함하는 메서드입니다. 우리는 동일한 순서 처리 단계를 가지고 두 개의 하위 클래스 NetOrder 및 StoreOrder가 있습니다. 실제로 실제 templateMethod()가 최종이어야 함을 정의하는 템플릿 메서드의 정의는 하나도 없습니다. 경우에 따라 재정의할 수 있습니다. 물건을 만드는 것을 그만두십시오, 친구, 당신은 그것을 위한 것이 아닙니다. 교과서에 충실하고, 조에서 물건을 복사 중지! 클라이언트는 기본 클래스의 템플릿 메서드를 호출하고 다른 단계의 구현에 따라 기본 클래스의 일부 메서드와 하위 클래스의 메서드중 일부를 사용하고 있습니다. 당신은 다시 틀렸다. 메서드를 최종으로 만들 수도 있습니다. 따라서 비공개로 만드는 것이 재정의되지 않도록 보장하는 유일한 방법은 아닙니다.

템플릿 메서드를 사용하면 모놀리식 알고리즘을 일련의 개별 단계로 전환할 수 있으며, 하위 클래스에서 쉽게 확장할 수 있으며 수퍼클래스에 정의된 구조를 그대로 유지할 수 있습니다. 처음에는 모든 단계를 추상화로 선언하여 하위 클래스가 이러한 메서드에 대한 자체 구현을 제공하도록 할 수 있습니다. 이 경우 하위 클래스에는 이미 필요한 모든 구현이 있으므로 수퍼 클래스의 메서드와 일치하도록 메서드의 서명을 조정하는 것만 하면 됩니다. 이 예제에서 템플릿 메서드 패턴은 간단한 전략 비디오 게임에서 인공 지능의 다양한 분기에 대한 «골격»을 제공합니다. 템플릿 메서드에서 보낸 자체 메시지 중 일부는 메서드를 후크하는 것일 수 있습니다. 이러한 메서드는 템플릿 메서드와 동일한 기본 클래스에서 구현되지만 빈 바디(즉, 아무 것도 수행하지 않습니다)가 있습니다. 후크 메서드는 하위 클래스가 재정의할 수 있도록 존재하므로 템플릿 메서드 자체를 재정의할 필요 없이 알고리즘의 동작을 미세 조정할 수 있습니다. 즉, 변형 구현을 «중단»할 수있는 «후크»를 제공합니다. 재정의할 수 없도록 템플릿 메서드를 최종으로 설정한 게임 추상 클래스 정의 작업을 만들려고 합니다. 크리켓과 축구는 게임을 확장하고 그 방법을 재정의 구체적인 클래스입니다. 추상 클래스는 알고리즘의 단계 역할을 하는 메서드와 이러한 메서드를 특정 순서로 호출하는 실제 템플릿 메서드를 선언합니다.