Unity での条件付き解決: 戦略パターンの探索
背景
条件付き解決により、次のことが可能になります。特定の条件に基づいてさまざまな実装クラスを挿入します。指定されたシナリオでは、認証の種類 (Twitter や Facebook など) に基づいて、さまざまな認証プロバイダーを条件付きで解決したいと考えています。
解決策: 戦略パターンの実装
推奨されるアプローチは、戦略パターンを採用することです。このパターンは、認証ロジックをコントローラーから切り離し、設計を変更せずに認証プロバイダーを簡単に追加または削除できるようにします。
インターフェイスの定義
- IAuthenticate:認証方法 Login を公開します。
- IAuthenticateStrategy: ログイン戦略のインターフェイスを定義しますさまざまな認証プロバイダーを管理します。
認証プロバイダーの実装
- TwitterAuth および FacebookAuth: IAuthenticate インターフェイスを実装し、特定のログイン実装を提供します。
- さらに、AppliesTo メソッドが含まれています。プロバイダーが特定のプロバイダー名に適用されるかどうか (例: TwitterAuth は "TwitterAuth" に適用されます)。
Strategy Implementation
- AuthenticateStrategy: IAuthenticateStrategy インターフェイスと一連の認証を管理します
- Login メソッドはプロバイダー名とユーザー認証情報を受け入れ、AppliesTo を使用して適切なプロバイダーを選択します。
Unity Registration
Configure Unityでは以下を登録しますタイプ:
- 一意のインスタンス名を持つ IAuthenticate 実装 (TwitterAuth および FacebookAuth)。
- IAuthenticate インスタンスの配列を含む注入コンストラクターを持つ IAuthenticateStrategy。
での使用法Controller
- IAuthenticateStrategy インターフェイスをコントローラー コンストラクターに挿入します。
- ストラテジーの Login メソッドを使用して、指定されたプロバイダー名でログイン操作を実行します。
代替オプション: Unity構成
また、Unity コンテナ プログラミングを使用する代わりに、unity.config ファイルにタイプを直接登録することもできます。
ストラテジー パターンによる条件解決の利点
-
拡張性: Unity 構成を更新するか新しい戦略実装を追加することで、認証プロバイダーを簡単に追加または削除します。
-
分離: から認証ロジックを分離します。コントローラにより、柔軟な認証管理が可能になります。
-
テスト可能性: 戦略パターンのインターフェイスのおかげで、各認証プロバイダーを個別にテストできます。
以上がUnity の条件解決と戦略パターンは認証プロバイダーの管理をどのように改善できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。