[デザインモード]-ブリッジモード

1.ブリッジモードの概要

1.ブリッジモードとは

ブリッジモードは、ハンドルモードおよびボディモードとも呼ばれ、構造設計パターンの1つです。これは、コードの抽象部分を実現部分から分離して、すべてを個別に変更できるようにすることを目的としています。

2.ビジネスシナリオを提案する

Xiao Wangは本日、Huawei、Xiaomi、Hammer向けの携帯電話を製造するためにFutukang鋳造工場を開設する予定です。すべての携帯電話はAndroidを使用しているため、電源のオン、オフ、電話の発信など、Androidと同じ機能も備えています。では、伝統的な考え方に従ってファウンドリを実装する場合はどうすればよいでしょうか。

3.従来の実装

まず、ブリッジモデルが適用できない場合に、このビジネスをどのように実装する必要があるかを見てみましょう。

(1)電話の抽象クラスを作成する

public abstract class Phone {
    
    
	protected String brand;

	abstract void open();

	abstract void close();

	abstract void call();

}

(2)特定の携帯電話ブランドを作成する

サブクラスの実装は同じなので、ここではXiaomiコードのみを投稿します

public class XiaomiPhone extends Phone {
    
    

	@Override
	void open() {
    
    
		System.out.println("小米手机开机了");

	}

	@Override
	void close() {
    
    
		System.out.println("小米手机关机了");

	}

	@Override
	void call() {
    
    
		System.out.println("小米手机可以拨打电话");

	}

}

(3)テストクラスを書く

public class Factory {
    
    

	public static void main(String[] args) {
    
    
		Phone phone = new XiaomiPhone();
		phone.call();
	}
}

ここに画像の説明を挿入

4.従来の方法の長所と短所を分析します

上記の例から、3つの携帯電話アプリケーションはすべてAndroidシステムであるため、操作動作はほぼ同じであることがわかります。しかし、従来の方法では、抽象クラスを統合することでこの種の再利用ビジネスを実装します。これには、毎回繰り返される動作の再エンコードが必要であり、コードの冗長性が生じます。2つ目は、システムのアップグレードによってこれらの関数の繰り返し部分が変更された場合、各実装で関連するメソッドの実装を変更する必要があるということです。したがって、この問題を解決するには、ブリッジモードが便利です。

第二に、ブリッジモードの実現

1.既存のコードを書き直します

(1)関節行動からの離脱

public interface AndroidImplementor {
    
    
	void open();

	void close();

	void call();

}

(2)動作実装クラスを作成します

public class AndroidConcreteImplementor implements AndroidImplementor{
    
    

	@Override
	public void open() {
    
    
		System.out.println("手机开机了");
		
	}

	@Override
	public void close() {
    
    
		System.out.println("手机关机了");
		
	}

	@Override
	public void call() {
    
    
		System.out.println("拨打电话");
		
	}

}

(3)エンティティ抽象クラスを作成する

public abstract class PhoneAbstranction {
    
    

	protected AndroidImplementor androidImplementor;

	abstract void open();

	abstract void close();

	abstract void call();

	// 约束子类必须拥有有参构造
	public PhoneAbstranction(AndroidImplementor androidImplementor) {
    
    
		super();
		this.androidImplementor = androidImplementor;
	}

}

(4)エンティティサブクラスを作成します

public class XiaomiPhoneRefinedAbstraction extends PhoneAbstranction {
    
    

	public XiaomiPhoneRefinedAbstraction(AndroidImplementor androidImplementor) {
    
    
		super(androidImplementor);
	}

	@Override
	void open() {
    
    
		super.androidImplementor.open();

	}

	@Override
	void close() {
    
    
		super.androidImplementor.close();

	}

	@Override
	void call() {
    
    
		super.androidImplementor.call();

	}

}

(5)テスト

public class Factory {
    
    

	public static void main(String[] args) {
    
    
		PhoneAbstranction phone = new XiaomiPhoneRefinedAbstraction(new AndroidConcreteImplementor());
		phone.call();
	}
}

ここに画像の説明を挿入

2.ブリッジモードの設計アイデアを分析します

ここに画像の説明を挿入
ブリッジモードを紹介したとき、ブリッジモードは主にいくつかの動作を抽出するためのものであり、より便利に拡張および保守できるようにするためのものであると言いました。したがって、この目標を達成するために、ブリッジモードは主に4つの部分に分けられます。

  1. 動作定義インターフェースの実装者
  2. 動作実装クラスconcreteImplementor
  3. 製品の抽象化
  4. RefinedAbstraction

三つ目、ブリッジモードの特徴

1.ブリッジモードの長所と短所

利点:

  1. 製品を動作から分離することにより、システムを2つのメンテナンスで拡張し、システムのスケーラビリティを向上させることができます。
  2. ビジネスの透明性を実現し、製品を隠し、切り離します。

短所:

  1. システムの複雑さの増加
  2. システムの2つの側面を特定する必要があり、ビジネスに習熟している必要があります

2.ブリッジモードの使用シナリオ

  1. システムが抽象ロールとコンポーネントの特定のロールの間に柔軟性を追加し、2つのレベル間に静的な継承関係を確立することを回避する必要がある場合、ブリッジモードはそれらに抽象層での関連付け関係を確立させることができます。
  2. 継承を使用したくないシステムや、マルチレベルの継承のためにシステムクラスの数が急激に増加するシステムには、ブリッジモードが特に適しています。
  3. クラスには独立して変化する2つの次元があり、両方の次元を拡張する必要があります。

3.JDKでのブリッジモードの使用

JDBC関連のクラスの設計は、ブリッジモードを使用することです。ブリッジモードを使用する目的は、異なるデータベースに同じ拡張実装を使用することです。

これで本日の内容は終わりです。ご不明な点がございましたら、個人的にメッセージをお送りいただくか、コメント欄にメッセージを残していただければ、お早めにお答えいたします。やりがいを感じている友達は、3回連続でワンクリックを覚え、ブロガーに注意を払い、迷子にならないで、売春婦になることを拒否してください〜

おすすめ

転載: blog.csdn.net/xiaoai1994/article/details/112799988