桥接设计模式 java_掌握Java设计模式之桥接设计模式(9)

本文介绍了桥接模式(Bridge Pattern)的概念,它用于解耦抽象化和实现化,使得两者可以独立变化。通过举例说明,如Controller、Service和DAO层的解耦,阐述了桥接模式在系统中增加灵活性的作用。文章提供了代码示例,展示如何将接口与抽象类分离,以实现更好的设计。桥接模式适用于多维度变化的场景,避免过度继承导致的复杂性,并能促进系统的扩展性。
摘要由CSDN通过智能技术生成

概念

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。大白话的意思是大家在工作中,controller,service,dao这三层互相依赖完全解偶,同理这个设计模式就是让抽象类与接口完全独立出来。

场景

1、由于实际的需要,某个类具有两个或两个以上的维度变化,如果只是使用继承将无法实现这种需要,或者使得设计变得相当臃肿

2、 如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。

3、对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。

代码实现

public interface DrawCircle {

void drawCircle(int radius, int x, int y);

}

public class DrawCircleBlank implements DrawCircle {

@Override

public void drawCircle(int radius, int x, int y) {

System.out.println("半径:"+radius+"x:"+x+"y:"+y);

}

}

public class DrawCircleRed implements DrawCircle {

@Override

public void drawCircle(int radius, int x, int y) {

System.out.println("半径:"+radius+"x:"+x+"y:"+y);

}

}

这是单独用接口写实现的,接下来把接口以及实现的类与抽象分离

public abstract class Shape {

protected DrawCircle drawCircle;

protected Shape(DrawCircle drawCircle){

this.drawCircle = drawCircle;

}

public abstract void drawCircle();

}

这个抽象类与接口建立关系

public class CircleShape extends Shape {

private int x, y, radius;

public CircleShape(int x, int y, int radius, DrawCircle drawCircle) {

super(drawCircle);

this.x = x;

this.y = y;

this.radius = radius;

}

@Override

public void drawCircle() {

drawCircle.drawCircle(radius,x,y);

}

}

这个相当于我们的service层,接口那个相当于dao层,接下来执行main函数

public class Main {

public static void main(String[] args){

Shape shape1 = new CircleShape(1,1,1,new DrawCircleRed());

Shape shape2 = new CircleShape(1,1,1,new DrawCircleBlank());

shape1.drawCircle();

shape2.drawCircle();

}

}

结果正确,它的设计思路要结合应用场景,然后核心思想就是把interface的具体实现部分与抽象画分开。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值