每部电梯都有一组状态。
•维护:电梯不会对外部信号做出反应(仅对其自身的信号)。
•支架:电梯固定在地板上。如果它接到电话。电梯就在那个楼层,门打开了。如果它在另一个楼层,它会向那个方向移动。
•向上:电梯向上移动。每次到达楼层时,都会检查是否需要停止。如果是这样,它会停止并打开门。它会等待一段时间并关闭门(除非有人正在通过它们。然后它从请求清单中移除地板并检查是否有另一个请求。如果是这样,电梯再次开始移动。如果没有,它进入国家立场。
•向下:喜欢向上但反方向
注意:有些电梯不从底部/ first_floor esp开始。在天空刮板的情况下。 min_floor& max_floor是Elevator的另外两个属性。
我的演示设计:
public abstract class Elevator
{
protected bool[] floorReady;
protected int CurrentFloor = 1;
protected int topfloor;
protected ElevatorStatus Status = ElevatorStatus.STOPPED; //ElevatorStatus is enum
protected virtual void Stop(int floor){}
protected virtual void Descend(int floor) {}
protected virtual void Ascend(int floor) {}
protected virtual void StayPut () {}
protected virtual void FloorPress (int floor){}
}
interface ILogger
{
void RegisterLog(string Message)
}
public FileLogger : ILogger
{
void RegisterLog(string Message)
{
//Custom Code
}
}
public class MyElevator : Elevator
{
// All method overrride for base
}
//Client class
class program
{
public static void main()
{
//DI for calling Looging
}
}
有人可以帮我设计满足所有SOLID原则的课程。
提前致谢...我想使用SOLID原理设计电梯模拟器。
答案 0 :(得分:0)
通过使用它,您可以移动业务规则,将电梯移动到每个特定状态。因此,不要使用枚举,而是让每个状态决定接下来要做什么(比如下一个动作使用哪种状态)。
它还允许您添加新功能(通过添加更多状态)而无需修改电梯类(从SOLID角度来看这很重要)。