核心思想
- 適配器模式類似,以后也會(huì)遇到意思接近一樣的設(shè)計(jì)模式。在開發(fā)中一般多個(gè)模式混用,且根據(jù)不同的場(chǎng)景進(jìn)行搭配,橋接模式也是結(jié)構(gòu)型模式
- 將抽象的部分和實(shí)現(xiàn)的部分分離,使它們都可以獨(dú)立的變化。通俗來(lái)說(shuō),就是通過(guò)組合來(lái)橋接其它的行為或維度
與適配器模式業(yè)務(wù)場(chǎng)景對(duì)比
- 橋接模式用與設(shè)計(jì)前期,精細(xì)化設(shè)計(jì),讓系統(tǒng)更加靈活
- 適配器模式用與設(shè)計(jì)完成之后,發(fā)現(xiàn)類、接口之間無(wú)法一起工作,需要進(jìn)行填坑
場(chǎng)景使用
- 系統(tǒng)需要在構(gòu)建的抽象化角色和具體角色之前增加更多的靈活性
- 不想使用繼承導(dǎo)致系統(tǒng)類的個(gè)數(shù)急劇增加
- 有個(gè)時(shí)候一個(gè)類,可能會(huì)擁有多個(gè)變化維度,比如手機(jī),有不同的品牌和顏色,可以使用繼承組合的方式進(jìn)行開發(fā),假如維度很多,就容易出現(xiàn)類的膨脹,使用橋接模式就可以解決這個(gè)問(wèn)題,而且解耦
繼承方式
橋接模式
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-671083.html
優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
- 抽象與實(shí)現(xiàn)分離
- 比較好的擴(kuò)展能力
缺點(diǎn)
- 使用聚合關(guān)聯(lián)關(guān)系建立在抽象層,要求開發(fā)者針對(duì)抽象進(jìn)行設(shè)計(jì)和編程
- 增加系統(tǒng)的理解和設(shè)計(jì)難度
代碼示例
顏色接口
public interface Color {
void useColor();
}
顏色接口實(shí)現(xiàn)
public class RedColor implements Color {
@Override
public void useColor() {
System.out.println("紅色");
}
}
public class WhiteColor implements Color {
@Override
public void useColor() {
System.out.println("白色");
}
}
public class BlackColor implements Color {
@Override
public void useColor() {
System.out.println("黑色");
}
}
手機(jī)抽象類
public abstract class Phone {
/**
* 組合的方式來(lái)橋接其它行為
*/
protected Color color;
public void setColor(Color color) {
this.color = color;
}
/**
* 手機(jī)的方法
*/
abstract public void run();
}
擴(kuò)展維度
public class ApplePhone extends Phone {
public ApplePhone(Color color){
super.setColor(color);
}
@Override
public void run() {
color.useColor();
System.out.println("蘋果手機(jī)");
}
}
public class XMPhone extends Phone {
public XMPhone(Color color){
super.setColor(color);
}
@Override
public void run() {
color.useColor();
System.out.println("小米手機(jī)");
}
}
public class HWPhone extends Phone {
public HWPhone(Color color){
super.setColor(color);
}
@Override
public void run() {
color.useColor();
System.out.println("華為手機(jī)");
}
}
測(cè)試
public class AppRun {
public static void main(String[] args) {
ApplePhone applePhone = new ApplePhone(new RedColor());
applePhone.run();
System.out.println("====================");
HWPhone blueHwPhone = new HWPhone(new BlackColor());
blueHwPhone.run();
System.out.println("====================");
HWPhone redHwPhone = new HWPhone(new RedColor());
redHwPhone.run();
}
}
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-671083.html
到了這里,關(guān)于設(shè)計(jì)模式-橋接模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!