1

私はAngularJsに比較的慣れていないので、それを使って単一ページのアプリケーションを構築しようとしています. 私のアプリケーションは、コンテンツ管理サイト内で実行されます。ユーザー、グループ、およびサイト機能用に 3 つのファクトリがあります。

angularの $cacheFactory の使用に興味がありますが、シングルトンであるため、データがファクトリに残っている場合の利点はわかりません。

たとえば、私のユーザー ファクトリには allUsers というオブジェクトがあります。このオブジェクトは、アプリケーションを通じてさまざまなビューに使用されます。直感的には、キャッシュする必要があるように見えますが、このオブジェクトはコントローラーからアクセスできるユーザー ファクトリにあるため、理由を理解するのに苦労しています。

4

1 に答える 1

0

CacheFactoryは工場です:

ファクトリ メソッド パターンの目的は、オブジェクトを作成するためのインターフェイスを定義することですが、オブジェクトのインスタンス化はサブクラスに任せます。

シングルトンとは異なり、そのタイプのオブジェクトが作成されるたびに新しいインスタンスを作成します。

シングルトン パターンの目的は、クラスのインスタンスが 1 つだけ読み込まれるようにし、そのインスタンスがグローバルなアクセス ポイントを提供するようにすることです。

Angular では、CacheFactory は他のソリューションに比べて次の利点を提供します。

  • コントローラーのスコープとは異なり、フィルターにキャッシュを挿入できます
  • キャッシュを列挙できます
  • キャッシュは簡単に破棄または再定義できます
  • コントローラ スコープとは異なり、キャッシュはダイジェスト データ バインディングに関連付けられていません。
  • Cookie や localStorage/sessionStorage とは異なり、キャッシュはブラウザーのアクセス許可に関連付けられていません。

データが工場に残っている場合のメリットがわからない

CacheFactory は次の機能を提供します。

  • 「定義された容量でキャッシュを作成する必要があります」
  • 「removeAll を介してキャッシュ全体を吹き飛ばし、いっぱいになると削除を開始する必要があります」
  • 「操作が連鎖している場合、アイテムを正しく更新して削除する必要があります」

しかし、CacheFactory には次の予期しない動作もあります。

  • 「最も古いエントリが削除された場合、次のエントリをパージする必要があります」
  • 「remove によって要素が実際に削除された場合にのみ、サイズを減らす必要があります」

参考文献

于 2016-02-04T07:59:48.560 に答える