Java设计模式----桥接模式(牵线搭桥)

桥接模式

描述

桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。

核心

将类的功能层次和实现层级结构相连接起来

这种层级结构的特点:
	父类具有基本功能  父类通过抽象方法定义相关接口(API)
	子类在父类上添加新功能	子类通过具体方法来实现接口(API)

背景

此篇我们已手机和软件为例 来讨论桥接模式
手机分为Apple手机和华为手机,手机具有共有的功能(父类的功能) 品牌特殊的功能(子类新添加的功能)
软件也同理 每个手机上搭载不同的软件 我们此处将手机与软件进行桥接,就实现了抽象与行为实现的分离,这种就是桥接模式的存在意义

UML类图

在这里插入图片描述

代码实现

软件的抽象类

public abstract class Soft {
    public abstract void chat();
}

微信软件的实现

public class Wechat extends Soft {
    @Override
    public void chat() {
        System.out.println("Wechat");
    }
}

QQ软件的实现

public class QQ extends Soft {
    @Override
    public void chat() {
        System.out.println("QQ");
    }
}

手机的抽象类 – 桥接上软件

public abstract class phone {
    protected Soft soft;

    public phone(Soft soft) {
        this.soft = soft;
    }

    public abstract void run();
}

华为手机的实现

public class HuaWei extends phone {
    public HuaWei(Soft soft) {
        super(soft);
    }

    @Override
    public void run() {
        this.soft.chat();
    }

    public void hw_Photo(){
        System.out.println("HW hw_Photo");
    }
}

苹果手机的实现

public class Apple extends phone {
    public Apple(Soft soft) {
        super(soft);
    }

    @Override
    public void run() {
        this.soft.chat();
    }

    public void apple_Photo(){
        System.out.println("Apple apple_Photo");
    }
}

测试类

public class Test {

    public static void main(String[] args) {
        Apple apple = new Apple(new Wechat());
        apple.run();
        apple.apple_Photo();
    }
}


Wechat
Apple apple_Photo
发布了19 篇原创文章 · 获赞 6 · 访问量 1972

猜你喜欢

转载自blog.csdn.net/qq_42252844/article/details/104514145