現実世界の暗号化: 戦略パターン ソリューション
Strategy パターンは、戦略と呼ばれる、交換可能なオブジェクト内の多様なアルゴリズムや動作を管理するための強力なソリューションを提供します。この設計パターンは柔軟性を強化し、基礎となるロジックを抽象化して分離することでオープン/クローズ原則 (OCP) を遵守します。
ファイル暗号化はその代表的な例です。 小さいファイルと大きいファイルでは、異なるアプローチが必要です:
小さいファイルの暗号化 (インメモリ戦略):
この戦略は、ファイル全体をメモリにロードして暗号化し、1 回の操作でプロセスを完了するため、小さなファイル (例: 1 GB 未満) に最適です。
大容量ファイルの暗号化 (ディスクへのスワップ戦略):
ファイルが大きい場合は、別のアプローチが必要です。ディスクへのスワップ戦略は、ファイルをチャンクに分けて処理します。 各チャンクはメモリにロードされ、暗号化されてから一時ファイルに書き込まれます。これにより、メモリの過負荷が防止されます。
ファイル サイズに関係なく、クライアント側の暗号化コードは一貫性を保ちます:
<code class="language-java">File file = getFile(); Cipher c = CipherFactory.getCipher(file.size()); c.encrypt();</code>
ファクトリ メソッドは、ファイル サイズに基づいて適切な戦略を決定します。
<code class="language-java">interface Cipher { void encrypt(); } class InMemoryCipher implements Cipher { public void encrypt() { // Load file into byte array and encrypt... } } class SwapToDiskCipher implements Cipher { public void encrypt() { // Process file in chunks, writing encrypted data to temporary files... } }</code>
CipherFactory
は、正しい Cipher
実装を選択して返します。
基本的に、戦略パターンでは、ファイル サイズに基づいてさまざまな暗号化方法を使用できるため、オープン/クローズの原則を維持しながら保守性と拡張性が確保されます。
以上が戦略パターンは、ファイル サイズが異なる現実世界の暗号化の課題をどのように解決できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。