package lc import ( "lc-smartX/util" ) // CorrectTimer 校时器接口 type CorrectTimer interface { Correct() } func DoCorrectTime(a any) { if c, ok := a.(CorrectTimer); ok { c.Correct() } } // ReConnector 重连器接口 type ReConnector interface { Reconnect() } func DoReconnect(a any) { if c, ok := a.(ReConnector); ok { c.Reconnect() } } // IDevice 抽象设备,包含屏和扬声器 type IDevice interface { // Call 通知输出设备,输出信息。屏显示来车警告信息,扬声器语音提示 Call() // Rollback 屏回滚到初始状态 Rollback() ReConnector CorrectTimer } type IntersectionDevice struct { Info util.OutputDevice Screen Screener } func (id *IntersectionDevice) Call() { id.Screen.Display(1) } func (id *IntersectionDevice) Rollback() { id.Screen.Display(0) } func (id *IntersectionDevice) Reconnect() { DoReconnect(id.Screen) } func (id *IntersectionDevice) Correct() { DoCorrectTime(id.Screen) }