デザインパターン(IX)ブリッジモード(ブリッジ)

  ブリッジモードでは、それをどのように誕生しているのですか?シーンを見てください。

  ソフトウェア会社は、ハードウェアとオペレーティングシステムのすべての異なる種類と互換性があるようにシステムを開発します。ハードウェアのさまざまな種類は、主にコンピュータ、タブレット、携帯電話です。オペレーティング・システムの様々なアップルのシステム、Windowsシステム、Linuxシステムです。図は、適応クラスの設計者のニーズを与えられました。

                                              

         記載されている7つのカテゴリに応じたこのデザインは、作成する必要があります。これは、統合的に実装されています。そのようなハードウェアやソフトウェアなどのソフトウェアを適応させる必要性をこの実現。しかし、問題はまだ何です。これは、トラブルまで拡張ノートことは明らかです。たとえば:Huawei社のオペレーティングシステムは、無名から出てきた、携帯電話、タブレットでは、コンピュータはオペレーティングシステムを使用することができます。だから我々は、次の3つのカテゴリを拡張する必要があります。これは、単純なビジネスケースです。より複雑ないくつかの複雑な場合は。そして、この展開は、多くのトラブルです。そして、次のブリッジモードでは、我々はこの問題に良い解決策を連絡することができるようになります。ブリッジモードの定義に見て:

        彼らは独立して変化することができるように抽象は、部分的な分離部分を達成します。

        私はいつも混乱していると、いくつかの抽象的な部分を達成するため、この定義に加えて、それが何であるかの価値があります。しかし、後者は、独立して変化を理解するために見ることができます。いくつかの他の文書を見て。実際に変更の2次元以上のビジネスシナリオでは、異なる寸法はクラスに独立している場合は、クラスの変更は、変更の別の次元に未満の寸法に影響を与えます。その後、一緒に作業の集約方法でそれらを一緒にリンクするために裁判を使用する必要があります。この凝集は橋のようなものですので、この問題解決の設計アプローチは、ブリッジモードと呼ばれます。

        ブリッジモードによる上記の分析用ビジネスシーン。ハードウェアの様々な種類がディメンションです。まずは、寸法の変化を分析してみましょう、オペレーティング・システムが次元であることは明らかです。上記の転送モードによる構造物の外観を変換します:

         次のユニットの簡単な図にどのようなこのデザインを実現。

// ハードウェア抽象クラス
パブリック 抽象 クラスAbstractHardware { 
    
    プライベートSoftwareOS OS; 
    
    公共AbstractHardware(SoftwareOS OS){
         この .os = OS; 
    } 
    
    パブリックSoftwareOSのgetOs(){
         戻りOS; 
    } 
    
    パブリック 抽象 ボイドrunOS(); 
} 

// コンピュータ、継承されたハードウェア抽象クラス
パブリック クラスのコンピュータの拡張AbstractHardware { 

    公共のコンピュータ(SoftwareOS OSを){
         スーパー(OS);
         // TODO自動生成コンストラクタスタブ
    } 
    
    公共 ボイドrunOS(){ 
        文字列strが = この.getOs()funRun();. 
        のSystem.out.println( "互換機:" + 筋力を); 
    } 
    
} 

// 電話ベース、ハードウェア抽象クラスが継承
パブリック クラス携帯電話を延びAbstractHardware { 

    公衆携帯電話(SoftwareOS OS){
         スーパー;(OS)
         // TODO自動生成コンストラクタスタブ
    } 

    @Override 
    公共 ボイドrunOS(){
         // TODO自動生成されたメソッドスタブ 
        文字列strは= これは.getOs()funRun();. 
        のSystem.out.println( "互換性のある携帯電話:" + STR); 
    } 
    
} 

// 錠剤クラス、継承ハードウェア抽象クラス
パブリック クラス Boardcom 延びAbstractHardware { 
       ... 
}
// オペレーティングシステムインターフェイス
パブリック インターフェイスSoftwareOS { 
    
    パブリック文字列funRun(); 
} 

// Apple社のオペレーティング・システム、オペレーティング・システム・インタフェース
パブリック クラスのMac 実装のSoftwareOS { 

    @Override 
    パブリック文字列funRun(){
         // TODO自動生成方法であって、スタブ
        リターン」 MAC OS " ; 
    } 
} 

// Androidオペレーティングシステム、オペレーティングシステムインタフェースの継承
パブリック クラスのAndriod 実装のSoftwareOS { 

    @Override 
    パブリックストリングfunRun(){
         // TODO自動生成されたスタブの方法であって、
        戻り「のAndriodオペレーティングシステム」; 
    } 

} 

// のLinuxタイプ、オペレーティング・システム・インタフェースが実装
パブリック クラスのLinuxを実装するSoftwareOS { 

    @Override 
    パブリック文字列funRun(){
         // TODOメソッドスタブが自動に生成された
        リターン「Linuxオペレーティングシステムを」; 
    } 
    
} 

/ / オペレーティングシステムインターフェース実装のWindowsクラス
パブリック クラスのWindows 実装のSoftwareOS { 

    @Override 
    パブリックストリングfunRun(){
         // TODOメソッドスタブが自動生成の
        リターンを「Windowsオペレーティングシステム」 ;
    } 
}
// テストクラス
パブリック クラスのクライアント{
     公共の 静的な 無効メイン(文字列[] args)を{ 
        
        // コンピュータ互換性の設定 
        AbstractHardwareコンピュータ= 新しい新しいコンピュータ(新新マック()); 
        computer.runOS(); 
        
        コンピュータ = 新しい新しいコンピュータ(新新のLinux ()); 
        computer.runOS(); 
        
        // 電話互換クラス構成 
        AbstractHardware cPhone = 新しい新しい携帯電話(新しい新規のAndriod()); 
        cphone.runOS(); 
        
        cPhone = 新しい新しい携帯電話(新しい新MAC()); 
        cphone.runOS(); 
        
        // タブレット互換性コンフィギュレーション..... 
        
    } 
} 

/ ************************* *結果************************************************************ /

    コンピュータ互換性:MacのOSの
    Linuxオペレーティングシステム:コンピュータクラスはと互換性のある
    
    互換性のある携帯電話:ののAndriodオペレーティングシステム
    電話はと互換性があります:MacのOS
    

  オペレーティングシステムにクラスのこの次元を拡大する必要性にあいまい、この時間:IT業界の継続的な発展に伴い、Huawei社は、オペレーティング・システムの完全な範囲を開発しました。次のように拡張:

// 香港孟オペレーティングシステム、オペレーティング・システム・インタフェース
パブリック クラス HongMeng 実装のSoftwareOS { 

    @Override 
    パブリック文字列funRun(){
         // TODOメソッドスタブが生成自動
        復帰「ホンメンOS」; 
    } 

} 

// テストクラス
パブリック クラスクライアント{
     公共 静的 ボイドメイン(文字列[]引数){ 
        
        // コンピュータ互換性コンフィギュレーション 
        AbstractHardwareコンピュータは= 新しい新しいコンピュータ(新しい新しいHongMeng()); 
        computer.runOS(); 
        // 互換性のある携帯電話型の構成
        = AbstractHardwarecphone 新しい新しい携帯電話(新しい新しいHongMeng()); 
        cphone.runOS(); 
        
        // タブレット互換性コンフィギュレーション... 
    } 
}
/ **************************結果********************** ******* /
    コンピュータ互換性:香港孟オペレーティングシステム
    の互換性電話:香港孟オペレーティングシステム

 

 解析ブリッジモード

  上記の例により、我々は、コールがより柔軟である必要クラスとしてトライアルでタイムトライアルを分離ブリッジモードを介して、異なる次元で2つのビジネスシナリオを参照してください。そして、必要が展開する際に、寸法が変更することができます拡大する必要が唯一の存在です。

  あなたはモードを埋めていない場合、それは、より複雑なシーンの実用的なアプリケーションがある場合、あなたは、クラスのコンピュータ、タブレット、携帯電話のオペレーティングシステムの拡張不分明を必要とする、拡張されたワークロードはさらに大きくなります。

  開閉の原理を具現もあります。両者の最上層は同一の維持に関連付けられている場合、サンプルの拡張クラスおよびインタフェースが変更されないので、唯一の拡張に基づいて新しいクラスを追加する必要があります。

       コードのこのデザインパターンの実装を介して、我々は要約:強く結合継承、組み合わせまたは凝集がより柔軟です。

  ビジネスシナリオの変化するディメンションを分析することである:だからこのモードの本質が何であるか、それはということです。そして、寸法が拡大するコードが容易になり、変化に追従していない別の次元を変更、お互いの異なる寸法が独立してみましょう。

おすすめ

転載: www.cnblogs.com/pengweiqiang/p/11072384.html