Я полагаю, что он использует нотацию диаграмм классов UML, поэтому эта диаграмма, кажется, применима:
Ссылка .
Если я правильно прочитал, TimedDoor
должен наследоваться от Door
.Но в вашем примере TimedDoor
реализует IDoor
.Это не согласуется с диаграммой.
Объявление должно быть следующим:
class TimedDoor : Door
Не думаю, что вам нужен IDoor
.Что в данном примере является верным, так это то, что Door
должен реализовывать ITimerClient
, чтобы Timer
мог выполнять над ним операции.ITimerClient
должен выставлять одного публичного участника, Timeout()
.Предположительно, когда таймер вызывает этот метод, дверь должна сама отпереться, если это дверь по времени.Поведение по умолчанию (например, для несвоевременной двери), вероятно, бездействие.
interface ITimerClient
{
void Timeout();
}
class Door : ITimerClient
{
public virtual void Timeout()
{
//No operation; this isn't a timed door
}
//etc.
}
class TimedDoor : Door
{
protected bool locked = true;
public override void Timeout()
{
this.Unlock(); //Override default behavior because this type of door is timed
base.Timeout(); //Optional, sometimes recommended
}
public virtual void Unlock()
{
this.locked = false;
}
//etc.
}