>Java >java지도 시간 >자바 디자인 패턴 소개 템플릿 패턴(Template Pattern)

자바 디자인 패턴 소개 템플릿 패턴(Template Pattern)

高洛峰
高洛峰원래의
2017-01-19 16:57:271339검색

템플릿 패턴 정의: 작업에서 알고리즘의 골격을 정의하고 일부 단계의 실행을 하위 클래스로 연기합니다.

사실 자바의 추상클래스는 원래 템플릿 패턴이라 많이 쓰이는데요. 그리고 이해하고 사용하기 쉽습니다. 예를 들어 바로 시작해 보겠습니다.

public abstract class Benchmark
{
  /**
  * 下面操作是我们希望在子类中完成
  */
  public abstract void benchmark();
  /**
  * 重复执行benchmark次数
  */
  public final long repeat (int count) {
    if (count <= 0)
      return 0;
    else {
      long startTime = System.currentTimeMillis();
            for (int i = 0; i < count; i++)
          benchmark();
                long stopTime = System.currentTimeMillis();
                return stopTime - startTime;
          }
        }
}

위 예에서는 benchmark() 작업을 반복적으로 수행하려고 하지만 benchmark()의 구체적인 내용은 설명되지 않습니다. 그러나 하위 클래스의 설명:

public class MethodBenchmark extends Benchmark
{
  /**
  * 真正定义benchmark内容
  */
  public void benchmark() {
    for (int i = 0; i < Integer.MAX_VALUE; i++){
      System.out.printtln("i="+i);    
       }
  }
}

까지 지연됩니다. 이제 템플릿 모드가 완성되었습니다. 매우 간단합니까? 사용 방법 보기:

   Benchmark operation = new MethodBenchmark();
    long duration = operation.repeat(Integer.parseInt(args[0].trim()));
    System.out.println("The operation took " + duration + " milliseconds");

아마도 이전에는 추상 클래스의 사용에 대해 궁금하셨겠지만 이제는 완전히 이해하셔야겠죠? 이렇게 하면 확장성이 높다는 점은 분명합니다. 나중에 벤치마크 내용이 변경되면 다른 애플리케이션 코드를 수정하지 않고 또 다른 상속된 하위 클래스만 만들면 됩니다.

자바 디자인 패턴에 템플릿 모드(Template mode) 도입과 관련된 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.