golang与java桥接模式

本文介绍了桥接设计模式的定义、理解及组成,强调了其在处理多维度变化问题上的作用。通过笔记本电脑的例子,展示了抽象化、扩展抽象化、实现化和具体实现化的角色划分。同时,提供了java和golang代码示例来阐述如何在实际编程中应用桥接模式。
摘要由CSDN通过智能技术生成

1.定义

将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。

2.理解

只看名称和定义这个桥接模式还是不好理解,用组合关系代替继承关系听起来和桥接好像没什么关联。当一个类有很多种维度的类型时,如果都采用继承的方式,会发现,子类的数量将会非常庞大。这个时候,我们可以将各种维度的类型给抽取出来,然后通过组合的方式加入到类中。
即桥接模式用来解决的是某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。

3.组成

  • 抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。
  • 扩展抽象化(Refined
    Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。
  • 实现化(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调用。
  • 具体实现化(Concrete Implementor)角色:给出实现化角色接口的具体实现。

4.示例

笔记本电脑可以分为windows笔记本和linux笔记本,也可以分为轻薄本和游戏本。

  • 笔记本:抽象化(Abstraction)角色
  • windows笔记本和linux笔记本:扩展抽象化(Refined Abstraction)角色
  • 笔记本类型:实现化(Implementor)角色
  • 轻薄本和游戏本:具体实现化(Concrete Implementor)角色

5.java代码

public class BridgePattern {
   
   
    public static void main(String[] args) {
   
        
        ILaptop windows = new WindowsLaptop();
        ILaptop windows2 = new WindowsLaptop();
        ILaptop linux = new LinuxLaptop();

        //电脑类型
        LaptopType game = new GameType();
        LaptopType thin = new ThinType();

        //可以自由组合
        windows.setLaptopType(game);
        windows2.setLaptopType(thin);
        linux.setLaptopType(game);

        windows.run();
        System.out.println("===========&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值