2012-04-02 5 views
1

몇 시간 동안 (다시) 검색을 한 후에, 나는 일반 Abstract 클래스와 템플릿 패턴의 사용 사이에 설명 가능한 차이점을 찾을 수 없다.템플릿 메서드 패턴과 추상 (기본) 클래스의 차이점은 무엇입니까?

내가 볼 수있는 유일한 것은 : 추상 클래스를 사용하는 동안 모든 방법을 구현해야합니다. 그러나 템플릿 메서드를 사용하는 동안, 당신은 단지 몇 가지 추상적 인 메소드를 구현해야합니다.

템플릿 패턴의 이점과 템플릿 패턴과 추상 클래스의 주된 차이점을 설명해 주실 수 있습니까?

p.s. 빠른 응답을 주셔서 감사합니다 : 난 그냥/

편집 공부 내 자신의 이해에 대해이 더 잘 알고 싶어! 그러나 나는 그것을 더 잘 설명 할 것이다. (이미 올바른 방향으로 가고 있기 때문이다.)). 나는 추상적 인 클래스가 무엇인지 안다! (그리고 당신이 구현해야하는 클래스!), 템플릿 패턴 (클래스에 정의 된 절차 알고리즘의 골격의 일종)의 기본 개념을 알고 있습니다. 나는 그들이보기 때문에 약간 혼란 스럽다! 또한 나는 영어가 아니기 때문에 내가 무엇을 감독 할 가능성이있다! THNX 사전에

답변

2

템플릿은 패턴입니다. 추상 클래스는 템플릿을 구현하는 데 사용할 수있는 언어 별 구문입니다. 일부 언어 (예 : Python 또는 JavaScript)에는 추상 클래스라는 개념이 없지만 다른 계약을 사용해야한다는 점에서 템플릿을 구현할 수 없다는 것을 의미하지는 않습니다.

언어로 추상 클래스를 사용할 수 있다는 장점 중 하나는 컴파일 타임에 필요한 템플릿 메서드 (계약서)를 구현할 수 있다는 것입니다. JavaScript와 같은 언어에서는 계약을 시행 할 수 없으며 규칙/문서를 통해서만 지정할 수 있습니다.

+0

그래서 중요한 차이점은 템플릿 패턴을 사용하면 기본 클래스를 인스턴스화 할 수 있고 /해야하며 추상 클래스가 아니라 하위 클래스에서 고유하게 구현할 수있는 몇 가지 추상 메소드 만 가질 수 있다는 것입니다. – Dominique

+1

직접 비교할 수없는 근본적으로 다른 개념이기 때문에 근본적인 차이는 없습니다. 택시와 메르세데스의 차이점을 묻는 것과 같습니다. 메르세데스를 사용하는 택시가 있지만 피아트, 인력거 또는 보트를 사용하는 택시가 있습니다. Java에서 템플릿 패턴은 추상 클래스로 구현 될 수 있습니다. 하지만 그렇게 할 필요는 없습니다. 예를 들어, 많은 Spring Framework의 Template 클래스는 비 abstract 클래스입니다. 그러나 추상적 인 경우 추상 클래스에 대한 java의 규칙을 따라야합니다 (즉 모든 메소드를 구현하거나 '추상'키워드를 유지해야합니다). –

+0

하지만 두 가지 구현 모두 다음과 같은 이점이 있습니까? 너 무슨 뜻인지 알 겠어! 추상 클래스는 템플릿 메서드 패턴 구현을 '강제로'할 수 있습니까? 그러나 추상 클래스 일 필요는 없습니다. 다른 (논리적 인) 차이점은 Abstract (클래스)가 구조이고 Template가 오른쪽 패턴입니다. – Dominique

0

추상 클래스는 템플릿 패턴을 구현하는 방법입니다. 하지만 그게 유일한 용도는 아닙니다.

추상 패턴의 하위 집합으로 템플릿 패턴을 상상해보십시오. 그것은 의심의 여지가 없어야합니다.

더 나은 단어가 없기 때문에 기술적으로 차이는 없습니다. 차이점은 우리가 사용하는 방식에 있습니다.

관련 문제