真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

橋接設(shè)計(jì)模式-創(chuàng)新互聯(lián)

一、橋接模式 1、定義

橋接模式(Bridge Pattern)又稱作橋梁模式,指將抽象部分與具體實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化,屬于結(jié)構(gòu)型設(shè)計(jì)模式。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、南豐ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的南豐網(wǎng)站制作公司

橋接模式的主要目的是通過組合的方式建立兩個(gè)類之間的聯(lián)系,而不是繼承,但又類似多重繼承方案。
橋接 模式的核心在于把抽象與實(shí)現(xiàn)解耦。這里的抽象與實(shí)現(xiàn)指的是兩種獨(dú)立變化的維度。

2、結(jié)構(gòu)

(1)模式的結(jié)構(gòu)

主要角色如下:

  • 抽象角色(Abstraction):該類持有一個(gè)對(duì)實(shí)現(xiàn)角色的引用,抽象角色中的方法需要實(shí)現(xiàn)角色來實(shí)現(xiàn)。抽象角色一般為抽象類。
  • 修正角色(RefinedAbstraction):Abstraction的具體實(shí)現(xiàn),對(duì) Abstraction的方法進(jìn)行完善和擴(kuò)展。
  • 實(shí)現(xiàn)角色(IImplementor):確定實(shí)現(xiàn)維度的基本操作,提供為 Abstraction使用。一般為接口或者抽象類。
  • 具體實(shí)現(xiàn)角色(ConcreteIImplementor):IImplementor的具體實(shí)現(xiàn)。
3、優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

  • 分離抽象部分及其具體實(shí)現(xiàn)部分。
  • 提高了系統(tǒng)的擴(kuò)展性。
  • 符合開閉原則。
  • 符合合成復(fù)用原則。

缺點(diǎn):

  • 增加了系統(tǒng)的理解與設(shè)計(jì)難度。
  • 需要正確地是識(shí)別系統(tǒng)中兩個(gè)獨(dú)立變化的維度。
4、使用場(chǎng)景
  • 在抽象和具體實(shí)現(xiàn)之間需要增加更多靈活性的場(chǎng)景。
  • 一個(gè)類存在兩個(gè)或者多個(gè)獨(dú)立變化的維度,而這兩個(gè)或者多個(gè)維度都需要獨(dú)立進(jìn)行擴(kuò)展。
5、在框架源碼中使用
  • JDBC API源碼中的 Driver類就是橋接對(duì)象。
二、模式的通用實(shí)現(xiàn)

代碼如下:

public class BridgePattern {public static void main(String[] args) {ConcreteIImplementorA iImplementorA = new ConcreteIImplementorA();

		// 組合/聚合實(shí)現(xiàn)
		RefinedAbstraction abstraction = new RefinedAbstraction(iImplementorA);
		abstraction.operation();
	}
}

// 抽象角色
abstract class Abstraction {// 實(shí)現(xiàn)角色的引用
	protected IImplementor iImplementor;

	public Abstraction(IImplementor iImplementor) {this.iImplementor = iImplementor;
	}

	public void operation(){iImplementor.operationImpl();
	}
}

// 修正角色
class RefinedAbstraction extends Abstraction{public RefinedAbstraction(IImplementor iImplementor) {super(iImplementor);
	}

	@Override
	public void operation() {super.operation();
		// do something
		System.out.println("RefinedAbstraction do something");
	}
}

// 實(shí)現(xiàn)角色
interface IImplementor{void operationImpl();
}

// 具體實(shí)現(xiàn)角色
class  ConcreteIImplementorA implements IImplementor{@Override
	public void operationImpl() {System.out.println("ConcreteIImplementorA----do");
	}
}

class  ConcreteIImplementorB implements IImplementor{@Override
	public void operationImpl() {System.out.println("ConcreteIImplementorB----do");
	}
}

在這里插入圖片描述

三、模式的應(yīng)用實(shí)例

(1)消息-實(shí)現(xiàn)角色

public interface IMessage {void send(String message, String toUser);
}

(2)郵件消息-具體實(shí)現(xiàn)角色

public class EmailMessage implements IMessage {@Override
	public void send(String message, String toUser) {System.out.println("使用郵件消息發(fā)送:" + message + " 給 " + toUser);
	}
}

(3)短信消息-具體實(shí)現(xiàn)角色

public class SMSMessage implements IMessage {@Override
	public void send(String message, String toUser) {System.out.println("使用短信消息發(fā)送:" + message + " 給 " + toUser);
	}
}

(4)橋接抽象角色

public class AbstractMessage {protected IMessage iMessage;

    public AbstractMessage(IMessage iMessage) {this.iMessage = iMessage;
    }

    // 發(fā)送消息,委派給實(shí)現(xiàn)部分的方法
    public void sendMessage(String message, String toUser) {this.iMessage.send(message, toUser);
    }
}

(5)具體普通消息-修正角色

public class NomalMessage extends AbstractMessage {public NomalMessage(IMessage iMessage) {super(iMessage);
	}

	@Override
	public void sendMessage(String message, String toUser) {// 普通消息,直接調(diào)用父類發(fā)送即可
		super.sendMessage(message, toUser);
	}
}

(6)具體加急消息-修正角色

public class UrgencyMessage extends AbstractMessage {public UrgencyMessage(IMessage iMessage) {super(iMessage);
	}

	@Override
	public void sendMessage(String message, String toUser) {message = "【加急】" + message;
		super.sendMessage(message, toUser);
		// do something
	}
}

(7)測(cè)試

public static void main(String[] args) {IMessage emailMessage = new EmailMessage();
		AbstractMessage nomalMessage = new NomalMessage(emailMessage);
		nomalMessage.sendMessage("野王求讓buff", "趙云");

		IMessage smsMessage = new SMSMessage();
		AbstractMessage urgencyMessage = new UrgencyMessage(emailMessage);
		urgencyMessage.sendMessage("野王請(qǐng)求支援", "趙云");
	}

在這里插入圖片描述

– 求知若饑,虛心若愚。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


分享文章:橋接設(shè)計(jì)模式-創(chuàng)新互聯(lián)
當(dāng)前地址:http://weahome.cn/article/dicjjh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部