使用C#

时间:2016-05-17 03:19:57

标签: c# design-patterns solid-principles

每部电梯都有一组状态。

•维护:电梯不会对外部信号做出反应(仅对其自身的信号)。

•支架:电梯固定在地板上。如果它接到电话。电梯就在那个楼层,门打开了。如果它在另一个楼层,它会向那个方向移动。

•向上:电梯向上移动。每次到达楼层时,都会检查是否需要停止。如果是这样,它会停止并打开门。它会等待一段时间并关闭门(除非有人正在通过它们。然后它从请求清单中移除地板并检查是否有另一个请求。如果是这样,电梯再次开始移动。如果没有,它进入国家立场。

•向下:喜欢向上但反方向

注意:有些电梯不从底部/ 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原理设计电梯模拟器。

1 个答案:

答案 0 :(得分:0)

查看state pattern

通过使用它,您可以移动业务规则,将电梯移动到每个特定状态。因此,不要使用枚举,而是让每个状态决定接下来要做什么(比如下一个动作使用哪种状态)。

它还允许您添加新功能(通过添加更多状态)而无需修改电梯类(从SOLID角度来看这很重要)。