この記事では、主に Java デザイン パターンのブリッジ モードを紹介し、ブリッジ モードの概念、機能、実装方法、および関連する注意事項をサンプル形式で詳しく説明します。 Java 設計パターンと例。参考として、以下のように全員と共有してください:
コンセプト:ブリッジパターン: 抽象部分を実装部分から分離し、独立して変更できるようにします。
ブリッジ モードは、継承関係を関連付け関係に変換することで、クラス間の結合を減らし、コードの記述量を減らします。
ブリッジモードはいつ使用しますか?簡単に言うと、オブジェクトの特性を抽象化すると、オブジェクトの特性属性が非常に抽象化されるため、属性を再度抽象化する必要があります。
そうしないと、特定のサブクラスの数が幾何級数的に増加し、拡張することが困難になります。既存のコードを保守する方法はありません。
たとえば、携帯電話の 2 つのオブジェクトを抽象化すると、オペレーティング システム、CPU、画面、オペレーター ネットワークなど、その属性のいくつかは非常に複雑になります。これらの属性を直接定義することはできず、再度抽象化する必要があります。特定の携帯電話オブジェクトはこれらの属性の組み合わせですが、単純な組み合わせではなく、属性が属性として独自の機能を実現する必要があります。このような設計では、コードの保守と拡張が容易になります。
注:このモデルについて話すとき、私が言ったり書いたりする例が正しいかどうかは保証できません。結局のところ、私はこのモデルについては初めてであり、すべての例は個人的な理解に基づいています。 私が考えるブリッジモードの説明図:
以下は例です:
1. まず抽象クラス、abstractを定義し、オブジェクトの特性を記述します。
将来のブリッジングと拡張のために、オブジェクトのプロパティの次元を分割します。
package test.design.bridge; public abstract class CellPhone { private String cellPhoneName; public CellPhoneSystem cellPhoneSystem; public CellPhoneCPU cellPhoneCPU; public void works(){ System.out.println("---------------------"); System.out.println("This cellphone is:"+this.getCellPhoneName()+",welcome to use. "); System.out.println("This cellphone detail infomation:"); System.out.println("系统类型:"+this.getCellPhoneSystem().getSystemName()); System.out.println("cpu型号:"+this.getCellPhoneCPU().getCpuName()); System.out.println("---------------------"); } public String getCellPhoneName() { return cellPhoneName; } public void setCellPhoneName(String cellPhoneName) { this.cellPhoneName = cellPhoneName; } public CellPhoneSystem getCellPhoneSystem() { return cellPhoneSystem; } public void setCellPhoneSystem(CellPhoneSystem cellPhoneSystem) { this.cellPhoneSystem = cellPhoneSystem; } public CellPhoneCPU getCellPhoneCPU() { return cellPhoneCPU; } public void setCellPhoneCPU(CellPhoneCPU cellPhoneCPU) { this.cellPhoneCPU = cellPhoneCPU; } }
package test.design.bridge; /** * 属性cpu被抽象成一个维度,为了以后扩展 * @author lushuaiyin * */ public abstract class CellPhoneCPU { public CellPhone cellPhone; public String cpuName; public void cpuWorks(){ System.out.println("I am cpu. My pattern is:"+this.getCpuName()); System.out.println("I am working for this cellphone:"+this.getCellPhone().getCellPhoneName()); } public CellPhone getCellPhone() { return cellPhone; } public void setCellPhone(CellPhone cellPhone) { this.cellPhone = cellPhone; this.getCellPhone().setCellPhoneCPU(this);// 装配(桥接,或者可以认为对象类与其属性类的传递) } public String getCpuName() { return cpuName; } public void setCpuName(String cpuName) { this.cpuName = cpuName; } }
package test.design.bridge; /** * 属性操作系统被抽象成一个维度,为了以后扩展 * @author lushuaiyin * */ public abstract class CellPhoneSystem { public CellPhone cellPhone; public String SystemName; public void systemWorks(){ System.out.println("I am "+this.getSystemName()+" system."); System.out.println("I am working for this cellphone:"+this.getCellPhone().getCellPhoneName()); } public CellPhone getCellPhone() { return cellPhone; } public void setCellPhone(CellPhone cellPhone) { this.cellPhone = cellPhone; this.getCellPhone().setCellPhoneSystem(this);// 装配(桥接,或者可以认为对象类与其属性类的传递) } public String getSystemName() { return SystemName; } public void setSystemName(String systemName) { SystemName = systemName; } }
ここでは、オペレーティング システムの属性と CPU の属性にそれぞれ 2 つの特定のオブジェクトを定義します。
次元を拡張する必要がある場合に、次元を拡張する方法について説明します。
携帯電話オブジェクトを定義します
package test.design.bridge; public class AndroidSystem extends CellPhoneSystem{ }メイン関数をテストします
package test.design.bridge; public class IOSSystem extends CellPhoneSystem{ }
package test.design.bridge; /** * 双核cpu * @author Administrator * */ public class TwoCore extends CellPhoneCPU{ }
package test.design.bridge; /** * 四核cpu * @author Administrator * */ public class FourCore extends CellPhoneCPU{ }
テスト印刷;
りー
以上がJavaデザインパターンにおけるブリッジモードの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。