【发布时间】:2026-02-13 08:30:01
【问题描述】:
每个电梯都有一组状态。
• 维护:电梯不对外部信号作出反应(仅对自身信号作出反应)。
• 站立:电梯固定在楼层上。如果它接到电话。电梯就在那个楼层,门打开了。如果它在另一个楼层,它会朝那个方向移动。
• 向上:电梯向上移动。每次到达楼层时,它都会检查是否需要停止。如果是这样,它会停下来打开门。它等待一定的时间并关闭门(除非有人正在通过它们。然后它从请求列表中删除楼层并检查是否有另一个请求。如果有,电梯再次开始移动。如果没有,它进入国家立场。
• 向下:类似向上但方向相反
注意:有些电梯不从底部/第一层特别是开始。在天空刮板的情况下。 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 原理设计一个电梯模拟器。
【问题讨论】:
-
欢迎您!抱歉,我们不是来为您编写代码的。为什么不给自己泡一杯好茶呢?阅读 SOLID;进行一些实验,看看结果如何。如果您遇到特定问题,请返回此处并发布相关信息。祝你好运! :)
-
让我将我的尝试上传到 GitHub 并在此处分享链接...听起来不错?
-
很高兴你有代码可以展示。您可以通过editing您的问题在此处发布最低金额吗?窥视者通常不会看外国网站或太长的代码。谢谢朋友
-
我的问题是在我的设计电梯类有很多责任。它是紫罗兰 SRP 吗?
标签: c# design-patterns solid-principles