JAVA変換(7)橋のデザインパターンのデザインパターン

著作権:著作権https://blog.csdn.net/qq_21046965/article/details/91629640手順猿jwang

序文

      この章では、知識のブリッジングモードを説明します

方法

1.コンセプト

ブリッジモードを説明する前に、我々は最初の生命の一般的な例を見て:

ブリッジタイプ、用途に応じて分割し、ある鉄道橋道路橋、鉄道橋、歩道橋、ブリッジ搬送水(水道)およびその他の特殊ブリッジ(例えば、導管を介して、ケーブルなど)。横断障壁で割った、河川上の橋、及び谷橋、高架道路(陸橋も知られる)、高架橋、架台があります。

それの表現を使用する方法でJavaクラスか?

私たちは、橋のクラスを設計することができ、以下のブリッジクラス鉄道橋道路橋、歩道橋川交差、次の鉄道橋を含む三つのサブカテゴリー、鉄道川を渡る橋道路橋を川の歩道橋を越え、3つのサブクラス、道路橋と歩行者同様のブリッジは3つのサブクラスは、当然のことながら、容易に表明しています。

上記のクラスまたは増加の障壁を渡る橋の利用を高めるために設計されている場合しかし、その後、確かに私たちは、スケーラビリティが悪い、再び3つのサブクラスを追加する必要があります!

クラス爆発の問題を解決するために、Java(登録商標)は、ブリッジモードに対する解決策を提供します。

アイデア2.ブリッジモードの実現

1)まず、適切なプロジェクトの設立

2)抽象クラスの橋を書きます

ブリッジは、次のようにブリッジは、3つのクラスがゾーニングによると、ブリッジは、抽象クラスを継承する抽象クラスです。

package cn.edu.ccut;

/**
 * 桥梁抽象类,按照用途分
 * @author jwang
 *
 */
public abstract class Bridge {
	
	protected Obstacle obstacle;
	
	public Bridge(Obstacle obstacle) {
		obstacle.say();
		this.obstacle = obstacle;
	}
	
	public abstract void say();
}

/**
 * 铁路大桥
 * @author jwang
 *
 */
class TL extends Bridge{

	public TL(Obstacle obstacle) {
		super(obstacle);
	}

	@Override
	public void say() {
		System.out.println("铁路大桥");
	}
	
}
/**
 * 公路大桥
 * @author jwang
 *
 */
class GL extends Bridge{
	
	public GL(Obstacle obstacle) {
		super(obstacle);
	}
	
	@Override
	public void say() {
		System.out.println("公路大桥");
	}
	
}

/**
 * 人行大桥
 * @author jwang
 *
 */
class RX extends Bridge{
	
	public RX(Obstacle obstacle) {
		super(obstacle);
	}
	
	@Override
	public void say() {
		System.out.println("人行大桥");
	}
	
}

3)障壁クラスインターフェースに書き込ま

 障害物は、三の実装このインタフェースの異なるサブクラスに係るバリアを横切って、バリアを横切っクラスインターフェースを表すために使用されるインターフェースです。

package cn.edu.ccut;

/**
 * 跨越障碍接口,按跨越障碍分
 * @author jwang
 *
 */
public interface Obstacle {
	
	void say();
}

/**
 * 跨河大桥
 * @author jwang
 *
 */
class KH implements Obstacle{

	@Override
	public void say() {
		System.out.println("跨河大桥");
	}
	
}
/**
 * 跨谷大桥
 * @author jwang
 *
 */
class KG implements Obstacle{
	
	@Override
	public void say() {
		System.out.println("跨谷大桥");
	}
	
}
/**
 * 跨线大桥
 * @author jwang
 *
 */
class KX implements Obstacle{
	
	@Override
	public void say() {
		System.out.println("跨线大桥");
	}
	
}

テストクラス試験4)の調製

package cn.edu.ccut;

public class Test {

	public static void main(String[] args) {
		//跨河铁路桥
		Bridge bridge = new TL(new KH());
		bridge.say();
	}

}

私たちは、クロス海の鉄道橋を必要とする場合したがって、だけではなく、以前の伝統的なクラスの継承階層の方法を組み合わせて使用​​します。

結果は以下の通りであります:

ジャワには多重継承がないので、問題プロジェクトカテゴリーの爆発を軽減するために、このモードを使用するように強制されます。

この場合、障壁を超越したカテゴリの橋の新規または使用が増加した後、継承された面倒を必要としなくなり、解決することは容易ではありません。 

おすすめ

転載: blog.csdn.net/qq_21046965/article/details/91629640