是否可以阻止对类的成员变量的某些方法调用
本文关键字:变量 成员 调用 方法 是否 | 更新日期: 2023-09-27 18:30:28
我需要在Windows Phone 8的默认相机类之上创建一个Camera类,PhotoCaptureDevice
理想情况下,我会想建立一个子类
class CustomCaptureDevice:PhotoCaptureDevice{
....
....
}
这将允许我配置相机设备,并通过CustomCaptureDevice提供一些额外的帧处理技术。不幸的是,PhotoCaptureDevice
是一个sealed class
,所以我不能这样做。
现在我可以想到两种可以帮助我解决问题的替代方法:
(1)
class CustomCaptureDevice
{
private PhotoCaptureDevice captureDevice;
// Implement all the functions of PhotoCaptureDevice here. And internally redirect them to PhotoCaptureDevice
}
上述方法太麻烦了。如果对 PhotoCaptureDevice 进行任何 API 更改,可能需要对 CustomCaptureDevice 类进行重大更新。
(二)
class CustomCaptureDevice
{
public PhotoCaptureDevice captureDevice;
// Expose this variable to the user, who can set things in PhotoCaptureDevice as per his needs.
}
以上似乎是一个更简单的解决方案,因为在对PhotoCaptureDevice进行API更改的情况下,它需要最少的更新。
似乎(2)可以很好地满足我的要求。但我有一个额外的要求,因此 (2) 可能证明不合适。我想禁用PhotoCaptureDevice中的某些配置功能,因为我想保留一些参数,如曝光和对焦,用户无法配置。
我如何在(2)的设计框架中实现这一点。可能吗?
我知道通过方法(1)很容易实现。请注意PhotoCaptureDevice
是密封类的约束。
第一种方法通常称为装饰器模式(即包装器)。我相信这正是您所需要的,因为它允许您在引擎盖下为给定的界面提供任何功能。
若要使类可与应用其他部分中的PhotoCaptureDevice
互换,必须实现其相关接口:
public class ExtendedPhotoCaptureDevice : IDisposable, ICameraCaptureDevice
{
private readonly ICameraCaptureDevice _actualImplementation;
...
}