我想知道如何在类里面有条件地隐藏数据。 例如,假设我有一个名为 Car 的类,它具有三个字段: 发动机、仪表读数和里程数。
我还有另外三个实体,分别称为:Driver、Mechanic 和 Passenger。 现在我想要的是:
司机应该只能访问里程(而不是引擎和仪表读数)
机械师应该只能访问引擎和里程(而不是仪表读数)
乘客应该只能访问 MeterReading(而不是 Engine 和 Mileage)
实现这个的最佳方法是什么..(不将整个逻辑基于 if else 语句)?
有什么想法吗?
谢谢。
最佳答案
想到的第一个想法是让您的 Car
类实现 3 个不同的接口(interface),每个类可以使用这些接口(interface)与您的 Car
交互类。
例如,(我的名字肯定可以改进,但你应该明白),IDriverAccess
界面可能如下:
public interface IDriverAccess
{
double Mileage { get; }
}
IMechanicAccess
界面可能如下:
public interface IMechanicAccess
{
EngineObject Engine { get; set; }
double Mileage { get; }
}
等等。然后您的汽车类可以实现这些接口(interface),但司机、机械师和乘客的类将只使用这些接口(interface)与对象交互。
public Car : IDriverAccess, IMechanicAccess, IPassengerAccess
{
// implement the interfaces
}
关于c# - 如何在C#中实现条件封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3932821/