ブリッジモード
ブリッジ構造は、主にそれによって抽象部分と部分は、独立して変えることができることを達成するために、抽象的な部分と分離された部分を達成するために、オブジェクトモデルスキーマに属します。
適用性ブリッジモード
-
開発者のためのブリッジモードは、機能の抽象一部にしたくないし、プログラムの動作中に、あなたが選択または交換のいくつかの自由を達成できるように、その実装は、関係の強い関連性の一部です。
-
抽象機能の一部と、その機能の一部を実現する必要があり、それらは、抽象化のより複雑な関数で増加と合わせて、いくつかの異なったサブクラスを達成同時に拡張することが可能であり、サブクラス方法を生成することによって拡張することができます。
-
一部の顧客が影響を使うの抽象実装を変更しないでください。
図のブリッジパターン構造。
図ブリッジパターン構造の構造から分かるように、重合弱い会合によって二種類の合計は、二つの構造を関連付けます。
-
抽象的役割(Abstration):抽象化の主な役割は、役割の実現への参照を保持したまま抽象的な定義を与えることです。
-
補正抽象化の役割(RefinedAbstration):拡張抽象的な感じ、抽象的役割は、機能や修正抽象定義を拡張しながら。
-
役割(実装側)の実現:この役割は、インタフェースの役割の実現を与えるが、唯一の基本的な操作を提供する一般的な役割を達成するために、このインタフェースの実現の具体的な実現は、抽象的なインタフェースの役割と完全に一致しない場合があり与えることはありませんこれらの操作の基本的な操作の、ロールベースの抽象化、より高いレベル。
-
役割(ConcreteImplementor)の具体的な実現:インタフェースの役割の実現とは、具体的な実現を提供します。
ブリッジモードの例
システムを実行するための早期警告システムでは、例えば、異なるエラー条件のための別のアプローチになります:あなたは現れシステムの正常な動作に影響を与えることなく、通常のエラーのために電子メール警告の方法を通じて、開発者のシステムに通知することができます小さなBUG;テキストメッセージや主要なエラー条件のために開封確認を追加するように言われ、開発者を選択するには、システムの正常な動作に影響を与えるので、問題はタイムリーな治療を受けることができることを保証します。これに基づき、また、新しい社内コミュニケーションソフトウェアを思い出させる可能性があるか、状況が早期警戒システムを送信した後、再びチェックするために半分の時間を持っていました。1、警告情報を送信することによって、新たなチャネルを拡大する:これは警告メッセージを送信するために二次元的に早期警戒システムを拡張します。図2に示すように、問題の重大度によって異なる対処スタイルを取るために拡張します。だから我々は、ブリッジモードを介してこれを実現する必要があります。
以下を達成するための役割と役割の抽象化:
パブリック 抽象 クラスAbstractionMessage { プライベートMessageImplementor messageImplementor。 公共AbstractionMessage(MessageImplementor messageImplementor){ この .messageImplementor = messageImplementor。 } パブリック 抽象 ボイド操作(文字列メッセージ)。 }
パブリック インターフェースMessageImplementor { 公共 ボイドOperationImpl(文字列メッセージ) }
一般的な警告メッセージ:
パブリック 抽象 クラスAbstractionMessage { MessageImplementor messageImplementor。 公共AbstractionMessage(MessageImplementor messageImplementor){ この .messageImplementor = messageImplementor。 } パブリック 抽象 ボイド操作(文字列メッセージ)。 }
重度の警告メッセージ:
パブリック クラス UrgencyMessageは延びAbstractionMessage { 公共UrgencyMessage(MessageImplementor messageImplementor){ スーパー(messageImplementor)を、 } @Override 公共 ボイド操作(文字メッセージ){ メッセージ =「加急」+ メッセージ。 スーパー.messageImplementor.OperationImpl(メッセージ); } パブリック文字列受領(){ 戻り ヌル。 } }
役割のメール具体的な実現を送信します。
パブリック クラス MessageMail 実装MessageImplementor { @Override 公共 ボイドOperationImpl(文字メッセージ){ するSystem.out.println( "Eメール、メッセージがある:" + メッセージ); } }
役割のSMS具体的な実現を送信:
パブリック クラス MessageSms 実装MessageImplementor { @Override 公共 ボイドOperationImpl(文字メッセージ){ するSystem.out.println( "SMSを送信する、メッセージは、具体的に" + メッセージ); } }
クライアント:
パブリック クラスクライアント{ 公共 静的 ボイドメイン(文字列[]引数){ MessageImplementor messageImplementor1 = 新しいMessageMail()。 MessageImplementor messageImplementor2 = 新しいMessageSms(); AbstractionMessage abstractionMessage = 新しいCommonMessage(messageImplementor1)。 abstractionMessage.Operation( "普通预警消息发送" ); System.out.println( "------------------------------" ); AbstractionMessage abstractionMessage1 = 新しいですUrgencyMessage(messageImplementor2); abstractionMessage1.Operation( "重度の警告メッセージ" ); } }
観察モードに対向することによって達成ブリッジの例には、ブリッジは左点の抽象モデルと実現に見出すことができます。新しいメッセージの実現の重大度レベルによっても影響されない別の重大度レベルにメッセージを送信するメッセージを送信するための新しい方法を達成しながら、全く影響がないことを示すメッセージを送信します。
メリットブリッジモード
-
ブリッジインターフェイスとインターフェイス上に結合定数が得られないことがあり、その実装孤立パターン部は、抽象クラスの実装は、実行時に構成されていてもよい、オブジェクトがあっても、実行時にその実装を変更することができます。
-
ブリッジモードは、システムのスケーラビリティを向上させ、抽象化と階層の役割の実現の役割を分離することができます開発者が拡張されます。