【发布时间】:2017-02-20 21:42:33
【问题描述】:
所以我最近遇到了一个关于系统设计的问题。 根据下面给定的设计,我们有 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可以推导出类似的类结构
【问题讨论】:
标签: oop architecture object-oriented-analysis system-design