1

Android、Windows 8、iOS でラップされるクロス プラットフォームの HTML5 アプリを開発しており、Web バージョンもある予定です。

DOM へのアクセス方法、ストレージへのアクセス方法、カメラへのアクセス方法はプラットフォームごとに異なるため、次のような関数を作成することを考えました。

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

そしてAddyosmaniの本から:

アダプター パターンは、オブジェクトまたはクラスのインターフェイスを特定のシステムと互換性のあるインターフェイスに変換します。

デザインパターン的に言えば、工場とみなされますか?とアダプター?このクラスを OOP 設計パターンの「標準」にするにはどうすればよいですか?

4

3 に答える 3

2

あなたの実装は Factory パターンに多少似ていますが、いくつかの違いがあります。ここで標準のファクトリ パターンの例を見つけて、自分で違いを確認できます。コードでは、オブジェクトの作成をメソッド内にカプセル化しているだけです。

そうは言っても、単にパターンを使用したいという理由だけでパターンを使用しないでください。アプリケーション アーキテクチャが貧弱で複雑になる傾向があるためです。目前の問題を解決する最も単純なソリューションを使用してください。その問題と解決策が標準パターンと一致する場合は、コードをラファクタリングしてそのパターンを実装する必要があります。このアプローチはパターンへのリファクタリングと呼ばれ、標準の設計パターンを使用する正しい方法です。

于 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 に答える