1

我正在开发一个跨平台的 HTML5 应用程序,它将被包装在 Android、Windows 8、iOS 中,并且还会有一个网络版本

由于每个平台都有不同的访问 dom、访问存储或访问摄像头的方式,我的想法是创建一个类似的函数:

function CameraAdapter() {
  if (windows8) {return Windows8.Camera}
  else if (android) ..
}

Addyosmani 书中

适配器模式将对象或类的接口转换为与特定系统兼容的接口。

就设计模式而言,它被认为是工厂吗?和适配器?我如何编写这个类以成为 OOP 设计模式的“标准”?

4

3 回答 3

2

您的实现有点接近工厂模式,尽管它与它有一些不同。您可以在此处找到标准工厂模式的示例,并自行查看差异。在您的代码中,您只是将对象创建封装在一个方法中。

话虽如此,不要仅仅因为你想要使用模式,因为它往往会导致糟糕和复杂的应用程序架构。使用最简单的解决方案来解决您手头的问题。如果该问题和解决方案与标准模式匹配,那么您应该重构您的代码以实现该模式。这种方法称为模式重构,是使用标准设计模式的正确方法。

于 2013-03-28T19:31:15.523 回答
0

我会说您正在实施的是工厂方法吗?您可以使用工厂方法封装对象的创建,然后为工厂方法返回的每个不同类实现一个通用接口/适配器模式。

于 2015-06-03T08:17:38.300 回答
-2

为什么不使用像http://modernizr.com/这样的现有工具来检测功能?此外,如果您使用 javascript 框架(例如 jquery UI/mobile、angular js 等),您无需执行任何特定于设备的操作。该框架为您完成繁重的工作。

于 2013-03-28T19:20:16.863 回答