GoF設計模式-橋接模式

    橋接模式(重要):
        又稱爲接口模式,將抽象化與實現化分離,使它們可以獨立地變化。如果系統中存在兩個獨立變化的維度(原因),那麼可以使用關聯關係將它們解耦,使它們可以獨立地擴展,用關聯關係代替多層繼承,減少了系統中類的個數,使系統更加靈活,並易於擴展
        橋接模式包含的角色:抽象類,抽象類的子類,實現類接口,具體實現類
    
    橋接模式的適用場景:
        1.系統中存在兩個獨立變化的維度,且都需要獨立地擴展
        2.不希望使用繼承而導致系統中類的個數過多
    
    橋接模式的優點:
        1.對於系統中兩個對立變化的維度,使用關聯關係代替多層繼承將兩個獨立變化的維度解耦,使它們可以獨立地擴展,減少了系統中類的個數,使系統更加靈活,並易於擴展,符合開閉原則,合成複用原則,里氏代換原則和依賴倒轉原則
        2.使用關聯,對用戶隱藏了實現細節
    
    橋接模式的缺點:
        1.增加了系統的理解和設計難度
        2.需要正確地識別出系統中獨立變化的維度

橋接模式的例子(在不同的平臺上運行不同的應用程序)        

實現類接口

public interface RuntimePlatform {
	void runApplication(String app);
}

實現類

public class Windows implements RuntimePlatform{

	 /**
	 * @Description: TODO
	 * @author doudou
	 * @date 2019年10月9日
	 * @param app
	 * @throws
	 * @return
	 * @see structual.BridgePattern.RuntimePlatform#runApplication(java.lang.String)
	*/
	@Override
	public void runApplication(String app) {
		System.out.println("在windows下運行"+app.toString());
	}

}
public class Linux implements RuntimePlatform{

	 /**
	 * @Description: TODO
	 * @author doudou
	 * @date 2019年10月9日
	 * @param app
	 * @throws
	 * @return
	 * @see structual.BridgePattern.RuntimePlatform#runApplication(java.lang.String)
	*/
	@Override
	public void runApplication(String app) {
		System.out.println("在Linux下運行"+app.toString());
	}

}

抽象類

public abstract class JApplication {
	
	protected RuntimePlatform runtimePlatform;
	
	public void setRuntimePlatform(RuntimePlatform runtimePlatform) {
		this.runtimePlatform = runtimePlatform;
	}
	
	public abstract void run();
}

抽象類的子類

public class AppA extends JApplication{

	 /**
	 * @Description: TODO
	 * @author doudou
	 * @date 2019年10月10日
	 * @throws
	 * @return
	 * @see structual.BridgePattern.JApplication#run()
	*/
	@Override
	public void run() {
		runtimePlatform.runApplication("AppA");
	}

}
public class AppB extends JApplication{

	 /**
	 * @Description: TODO
	 * @author doudou
	 * @date 2019年10月10日
	 * @throws
	 * @return
	 * @see structual.BridgePattern.JApplication#run()
	*/
	@Override
	public void run() {
		runtimePlatform.runApplication("AppB");	
	}

}


    橋接模式的應用:
        1.java虛擬機的設計,對於一個應用程序,在不同的平臺使用不同的java虛擬機    1.跨平臺日誌

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章