橋接模式

橋接模式的定義:
java

  將抽象與行爲區分開, 把行爲和抽象分開封裝,各自獨立能夠彼此間組合。ide

UML圖:測試

 

使用意圖:this

 不但願抽象部分和行爲有一種固定的綁定關係,而是應該能夠動態聯繫的。spa


例子: code

  有不一樣種類的鴨子,野鴨,火箭鴨,烤鴨,每種鴨子都有他們的飛行方式,這時能夠繼承Duck父類去實現父類飛行的抽象方法,試想一下 ,原來的野鴨飛行方式是靠翅膀,如今須要另外一種野鴨,它靠火箭飛行器飛行,  莫非去繼承野鴨產生新的子類? 若是再有另外一種野鴨,靠螺旋槳飛行,在建立一個野鴨的子類? 如今的問題是鴨子和飛行方式牢牢的綁在了一塊兒,沒有作到鬆耦合,這時能夠用橋接模式實現。orm


鴨子抽象類:繼承

package com.younchen.bridge;

public abstract  class Duck {

	FlyAction  flyAction;

	public FlyAction getFlyAction() {
		return flyAction;
	}
        
        //設置飛行行爲
	public void setFlyAction(FlyAction flyAction) {
		this.flyAction = flyAction;
	}
	
	//鴨子飛行方法
	public abstract void  doFly();
	
}


火箭鴨:ci

package com.younchen.bridge;

public class RocketDuck extends Duck{

	@Override
	public void doFly() {
		// TODO Auto-generated method stub
		System.out.print ("火箭鴨在飛翔:");
		flyAction.flyToSky();
	}

}

 

野鴨:get

package com.younchen.bridge;

public class WildDuck extends Duck{

	@Override
	public void doFly() {
		// TODO Auto-generated method stub
		System.out.print ("野鴨在飛翔:");
		flyAction.flyToSky();
	}

}


飛行抽象類:

package com.younchen.bridge;

public abstract class FlyAction {

	public abstract void flyToSky();
}

 

火箭飛行器飛行方式:

package com.younchen.bridge;

public abstract class FlyAction {

	public abstract void flyToSky();
}


烤翅膀飛行方式:

package com.younchen.bridge;

public class WingFlyAction extends FlyAction {

	@Override
	public void flyToSky() {
		// TODO Auto-generated method stub
		System.out.println("拍打着翅膀飛翔");
	}

}


測試類:

package com.younchen.bridge;

public class BridgeTestMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Duck wildDuck=new WildDuck();
		Duck rockDuck=new RocketDuck();
		
		wildDuck.setFlyAction(new WingFlyAction());
		rockDuck.setFlyAction(new RocketFlyAction());
		
		wildDuck.doFly();
		rockDuck.doFly();
		
		System.out.println("-------------------------------");
		
		wildDuck.setFlyAction(new RocketFlyAction());
		rockDuck.setFlyAction(new WingFlyAction());
		
		wildDuck.doFly();
		rockDuck.doFly();
		
	}

}
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息