0

我需要在 Windows Phone 8 的默认相机类PhotoCaptureDevice之上创建一个相机类

理想情况下,我本来想建立一个子班

class CustomCaptureDevice:PhotoCaptureDevice{
    ....
    ....
}

这将允许我配置相机设备,并通过 CustomCaptureDevice 提供一些额外的帧处理技术。不幸的是,PhotoCaptureDeviceis a sealed class,因此我不能这样做。

现在我可以想到两种可以帮助我解决问题的替代方法:

(1)

class CustomCaptureDevice
{
    private PhotoCaptureDevice captureDevice;

    // Implement all the functions of PhotoCaptureDevice here. And internally redirect them to PhotoCaptureDevice

}

上面的方法太麻烦了。如果对 PhotoCaptureDevice 进行任何 API 更改,可能需要对 CustomCaptureDevice 类进行重大更新。

(2)

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的约束。

4

1 回答 1

0

第一种方法通常称为装饰器模式(即包装器)。我相信这正是您所需要的,因为它允许您在后台为给定界面提供任何功能。

要使该类与PhotoCaptureDevice应用程序的其他部分中的 a 可互换,您必须实现其相关接口:

public class ExtendedPhotoCaptureDevice : IDisposable, ICameraCaptureDevice
{
    private readonly ICameraCaptureDevice _actualImplementation;
    ...
}
于 2013-09-06T12:15:52.057 回答