所以我最近遇到了一个关于系统设计的问题。根据下面给定的设计,我们有 3 辆汽车,其中 2 辆可以自动驾驶,其中 2 辆可以自动发射
所以问题是——你将如何设计类结构。还提供一个示例方法,例如 Launch for Suv 并提供单元测试
所以 - 为了回答这个问题,我想出了如下所述的东西:
public class BaseCar
{
// all common properties
int height, width, length;
string color etc.
}
public class Suv : BaseCar
{
LaunchCar LaunchSuv {get; set;}
// Lets say we use DI to inject ctor
Suv(IAutoLaunch autoLaunch)
{
LaunchSuv = autoLaunch;
}
}
Interface IAutoLaunch
{
bool Launch();
}
public class LaunchCar : IAutoLaunch
{
// ctor based on car type
LaunchCar(CarType)
{
}
// Implementation of Launch based on Car Type
bool Launch()
{
// successfully launch car here..
return true;
}
}
所以在最后,假设我们想要启动 Suv,那么在这种情况下,我们可以执行类似 LaunchSuv.Launch(); 的操作。
- 我不确定我的解决方案是否朝着正确的方向发展。如果是的话,有没有改进的余地?
仅供参考 - 我决定为 AutoPilot 和 AutoLaunch 设置单独的界面的原因是因为总有 3 辆汽车中的一辆汽车没有这两种功能要求。如果我在基础车中声明这两种方法,那么所有汽车都将具有我不想要的两种方法 - 不确定这个原因是好的设计还是不那么重要!另外我刚刚以 SUV 为例,可以为 Sedan 和 Coupe 派生类似的类结构