템플릿 메서드 패턴의 템플릿 메서드 패턴을 구현하면 추상 기본 클래스가 재정의 할 수없는 메서드를 제공합니다.이 메서드는 공용 알고리즘을 구현하므로 하위 클래스에서 재정의되어서는 안됩니다. Java에서 템플릿 메서드는 추상 기본 클래스 내에서 final
으로 선언됩니다. C#에서는 sealed
키워드가 비슷한 의미를 갖지만 재정의되지 않은 메서드는 sealed
으로 선언 할 수 없습니다.C#
public abstract class Base
{
protected abstract AlgorithmStep1();
protected abstract AlgorithmStep2();
public sealed void TemplateMethod() // sealed: compile error
{
AlgorithmStep1();
AlgorithmStep2();
}
}
이 문제를 어떻게 해결할 수 있습니까? (C#의) 하위 클래스로 메서드를 재정의 할 수없는 이유는 무엇입니까?
오버라이드 된 멤버 만 인감 할 수 있습니다. 키워드'abstract' 또는'virtual'가 없다는 것은 메소드가 이미 봉인되어 있음을 의미합니다. – ChaosPandion