桥接模式:将类的功能层次和实现层次分离,动态结合

桥接模式是一种软件设计模式,它可以将抽象部分与它们的实现部分分离开来,以便两者都可以独立地进行变化。该模式使用组合而不是继承来完成这一点。

在桥接模式中,抽象部分和实现部分之间建立了一个桥梁(Bridge)。抽象部分定义出高层次结构,而实现部分定义出低层次结构。通过桥梁,抽象部分和实现部分可以独立地进行扩展,而不会影响到对方。

举个例子,假设你正在设计一个图形用户界面(GUI)工具包,其中包含不同类型的 UI 元素(如按钮、文本框等)。每种 UI 元素都有不同的行为和样式,而这些行为和样式与操作系统、窗口系统和视觉主题等因素相关联。使用桥接模式,你可以将 UI 元素和这些因素分离开来,使得它们可以独立地进行扩展和修改,从而更好地适应不同的环境和需求。

总的来说,桥接模式可以帮助我们实现更加灵活和可扩展的软件系统,并且可以减少类之间的耦合。

// 实现化角色
interface GuiImpl {
void drawButton();
}
// 具体实现化角色A
class WindowsGui implements GuiImpl {
public void drawButton() {
System.out.println("Windows风格的按钮");
}
}
// 具体实现化角色B
class MacGui implements GuiImpl {
public void drawButton() {
System.out.println("Mac风格的按钮");
}
}
// 抽象化角色
abstract class Button {
protected GuiImpl impl;
public Button(GuiImpl impl) {
this.impl = impl;
}
abstract void draw();
}
// 扩展抽象化角色
class SquareButton extends Button {
public SquareButton(GuiImpl impl) {
super(impl);
}
public void draw() {
System.out.print("绘制正方形按钮,样式为:");
impl.drawButton();
}
}
// 扩展抽象化角色
class CircleButton extends Button {
public CircleButton(GuiImpl impl) {
super(impl);
}
public void draw() {
System.out.print("绘制圆形按钮,样式为:");
impl.drawButton();
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
GuiImpl windows = new WindowsGui();
GuiImpl mac = new MacGui();
Button squareButton = new SquareButton(windows);
Button circleButton = new CircleButton(mac);
squareButton.draw();
circleButton.draw();
}
}
posted @   穆海如枫  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示