【每日一记】设计模式——桥接模式

本文介绍了一种设计模式——桥接模式,旨在通过将抽象部分与其实现部分分离,使两者可以独立变化。通过一个简单的例子——人与运动的关系,演示了如何使用桥接模式来实现这种设计,并解释了其在实际开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

  • 意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化
  • 适用场景:某个类具有两个或两个以上的维度变化,如果只是用继承将无法实现这种需要,则可以使用桥接模式

实现

以一个人做运动的例子进行说明,其中人和运动为可变唯独:人可分为男人、女人,运动可分为游泳、跑步

// 运动抽象
public interface Sport {
    String doSport();
}
// 游泳,具体运动
public class Swimming implements Sport {
    @Override
    public String doSport() {
        return "swimming";
    }
}
// 跑步,具体运动
class Running implements Sport {
    @Override
    public String doSport() {
        return "running";
    }
}
// 人的抽象
public abstract class Person {
    private Sport sport;

    public Sport getSport() {
        return sport;
    }

    public void setSport(Sport sport) {
        this.sport = sport;
    }

    public abstract void sport();
}
// 男人
public class Man extends Person {
    @Override
    public void sport() {
        System.out.println("Man is " + getSport().doSport());
    }
}
// 女人
class Woman extends Person {
    @Override
    public void sport() {
        System.out.println("Woman is " + getSport().doSport());
    }
}
// 客户端
public class Client {
    public static void main(String[] args) {
        Sport swim = new Swimming();
        Sport run = new Running();
        // 男人进行游泳和跑步
        Person man = new Man();
        man.setSport(swim);
        man.sport();
        man.setSport(run);
        man.sport();
        // 女人进行游泳和跑步
        Person woman = new Woman();
        woman.setSport(swim);
        woman.sport();
        woman.setSport(run);
        woman.sport();
    }

}

通过桥接模式通过组合关系代替继承,使得人和运动只依赖其抽象而非具体实现,从而使两个可变维度可以独立的变换

实际应用

java.util.logging.Handler和java.util.logging.Formatter

类图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值