Я пытаюсь создать абстрактный класс, определяющий абстрактный метод, который должен быть производным от других классов, которые реализуют определенное поведение в абстрактном методе. Я хочу, чтобы абстрактный класс содержал некоторую информацию о состоянии, которая представляет собой реализацию в производных классах без ошибок, но я хочу реализовать всю обработку состояний в AbstractClass, а не в производных классах. Я хочу, чтобы производные классы полностью не знали о функциональности в AbstractClass. Ниже приведен пример. Я сделал комментарии в коде, чтобы описать, чего я пытаюсь достичь.
public abstract class AbstractClass
{
public void Start()
{
ThreadStart ts = new ThreadStart(PerformWork);
Thread t = new Thread(ts);
t.Start();
Thread.Sleep(2000);
// Dependent on if ReportWork exited without expcetions
// I want to call ReportSuccess or ReportFailure from this method.
// However, I dont want to implement any reporting functionallity (or
// as little as possible)
// into the deriving classes PerformWork() method. Simply put
// I want the deriving classes to be totally unaware of the reporting.
}
public void ReportSuccess()
{
Console.WriteLine("Success!");
}
public void ReportFailure()
{
Console.WriteLine("Failure!");
}
public abstract void PerformWork();
}
Класс, производный от AbstractClass:
class ConcreteImplementationClass:AbstractClass
{
public override void PerformWork()
{
// Implements some functionality
// without knowing anything about
// whats going on in AbstractClass.
}
}
У кого-нибудь есть советы, как мне добиться этой функциональности или как создать нечто подобное?