我必须如何更新一个只能从另一个特定类更新的类?
在以下示例中,封装被破坏,因为Sensor
可以从任何其他类更新,而不仅仅是从Device
. 我对吗?
class Device
{
public IEnumerable<Sensor> Sensors { get; private set; }
void SomeInternalCall(int sensorId, int signal)
{
Sensors.First(s => s.Id == sensorId).Update(signal);
}
}
class Sensor
{
public int Id { get; private set; }
public event Action<int> OnSignal;
public void Update(int signal)
{
if (OnSignal != null) OnSignal(signal);
}
}
class SensorUser
{
public SensorUser(Sensor s)
{
s.OnSignal += SignalHandler;
}
void SignalHandler(int signal)
{
// ...
}
}