一、前言

Android桥接(Bridge)模式,又被称为桥梁模式。结构型模式之一。我们知道桥梁起到连接两岸的作用,而桥接模式的作用和这十分类似,就是连接抽象部分和实现部分。起到解耦的作用。

二、定义

将抽象部分与实现部分分离,使它们都可以独立的进行变化。

三、例子

理论部分还是比较抽象,下面我举一个例子来说明什么是桥接模式,并在其中说明桥接模式的核心。例子是我们要给圆、正方形和长方形添加白色或黑色。

3.1、实现部分

我们实现出添加颜色,所以称之为实现部分,这里可以用接口,也可以用抽象类。笔者使用接口public interface Color {    public void coloring();

}public class White implements Color {    private static final String TAG = White.class.getSimpleName();    @Override

public void coloring() {

Log.d(TAG,"模拟正在涂上白色...");

}

}public class Black implements Color {    private static final String TAG = Black.class.getSimpleName();    @Override

public void coloring() {

Log.d(TAG,"模拟正在涂上黑色...");

}

}

这里说下为啥要写两个具体的类来表示白色或黑色,而不是写成一个类,既可以画白色也可以画黑色。首先:不要和安卓原生的Color类混淆。其次:这里主要是对白色或黑色进行一个抽象,假如你把它想成颜料,它们是具体的一个类。最后:如果二者写在一起,也等于多写了一个类来包含黑色和白色这两个类。

3.2、抽象部分

抽象出具体的事物:图形,并秒回具体的图形。此部分一般使用抽象类。public abstract class Shape {    protected Color color;    public Shape(Color color) {        this.color = color;

}    public abstract void draw();

}

正方形public class Square extends Shape {    private static final String TAG = Square.class.getSimpleName();    public Square(Color color) {        super(color);

}    @Override

public void draw() {

Log.d(TAG,"模拟正在画正方形...");

color.coloring();

}

}

长方形public class Rectangle extends Shape {    private static final String TAG = Rectangle.class.getSimpleName();    public Rectangle(Color color) {        super(color);

}    @Override

public void draw() {

Log.d(TAG,"模拟正在画长方形...");

color.coloring();

}

}

圆形public class Circular extends Shape {    private static final String TAG = Circular.class.getSimpleName();    public Circular(Color color) {        super(color);

}    @Override

public void draw() {

Log.d(TAG,"模拟正在画圆形...");

color.coloring();

}

}

桥接模式小结说明:

1、抽象和实现部分的区分

实现部分主要是对抽象化的事物进一步的具体化。这里就是对抽象化的图形进一步添加颜色。

2、桥接模式结构核心

抽象部分拥有实现部分实例,并调用实现部分实例的方法。

由以上构成桥接模式。

3、减少类的个数利于扩展,并且解耦。

首先有正方形、长方形和圆形,你还可以添加更多的图形。颜色也可以添加更多的颜色。我们把图形看成一个维度,颜色看成一个维度。如果不用桥接模式,你可能像下面这样写。你不单要为白色添加一个类,还得为黑色添加一个类。如果有更多的颜色。将成倍增长。桥接模式就分离这两个维度,使这两个维度独立。达到减少类的个数和解耦的作用。public class Square extends Shape implements Color

3.3、调用White white = new White();

Black black = new Black();

Square square = new Square(white);

Rectangle rectangle = new Rectangle(black);

Circular circular = new Circular(white);

square.draw();

rectangle.draw();

circular.draw();

输出02-23 10:01:19.999 17899-17899/com.yink.designpattern.designpattern D/Square: 模拟正在画正方形...

02-23 10:01:19.999 17899-17899/com.yink.designpattern.designpattern D/White: 模拟正在涂上白色...

02-23 10:01:19.999 17899-17899/com.yink.designpattern.designpattern D/Rectangle: 模拟正在画长方形...

02-23 10:01:19.999 17899-17899/com.yink.designpattern.designpattern D/Black: 模拟正在涂上黑色...

02-23 10:01:19.999 17899-17899/com.yink.designpattern.designpattern D/Circular: 模拟正在画圆形...

02-23 10:01:19.999 17899-17899/com.yink.designpattern.designpattern D/White: 模拟正在涂上白色...

四、写在最后

1、桥接模式将抽象部分和实现部分分离,解耦

2、两个维度,独立变化

3、灵活的扩展,透明实现

作者:Yink_Liu

链接:https://www.jianshu.com/p/5ac2805a1df4

打开App,阅读手记

android 桥接,Android 桥接模式相关推荐

  1. Android Activity的启动模式及对生命周期的影响

    Activity的启动模式 官网解释链接 (tips:在阅读此文章前,应先对Activity生命周期掌握) 在每一个程序的main目录下有一个AndroidManifest.xml文件,这个文件是用来 ...

  2. 范例解析:学习Android的IPC主板模式

    一.认识Android的IPC主板模式 系统架构设计最关键的任务就是组合(或称整合),而且最好是能与众不同.深具创新性组合.Android就擅用了主板模式,以通用性接口实践跨进程的IPC通信机制.由于 ...

  3. android eng 模式,android 4.0 编译模式 eng - user 时遇到的有关问题

    android 4.0 编译模式 eng -- > user 时遇到的问题 关键词:android  4.0  user  eng  camera  nand  串口 平台信息: 内核:linu ...

  4. android主板接口定义,范例解析:学习Android的IPC主板模式

    一.认识Android的IPC主板模式 系统架构设计最关键的任务就是组合(或称整合),而且最好是能与众不同.深具创新性组合.Android就擅用了主板模式,以通用性接口实践跨进程的IPC通信机制.由于 ...

  5. android 勿扰模式代码,android Lollipop勿扰模式

    android的L新版本中增加了"打扰"的新功能,相信很多同学搞不明白.找了一篇介绍勿扰模式很好的文章,可惜是英文的,现翻译如下,相信读完此问,你会理解android对勿扰模式的设 ...

  6. Android设计模式之——访问者模式

    一.介绍 访问者模式是一种将数据操作与数据结构分离的设计模式,它是<设计模式>中23种设计模式中最复杂的一个,但它的使用频率并不高,正如<设计模式>的作者GOF对访问者模式的描 ...

  7. Android中Activity启动模式

    Android中Activity启动模式一共是四种,这里我写一下我对其的理解: 1.standard(默认) 2.singleTop,如果某个Activity设置了该属性,且当前Activity就是这 ...

  8. Android N 多窗口模式,你需要知道的一切

    Android N中最大.最引人注意的变化就是Mutil-window模式.对于一个开发者,我们最关心的就是:Mutil-window模式下怎么配置mutil-window模式.Activity的生命 ...

  9. Android ActionBar的Overlay模式如何不遮盖顶部内容的问题

    关于actionbar的overlay模式请参考 如何让android的actionbar浮动且透明 一文.这篇文章讲的是如何在这种模式下让actionbar不遮住顶部的内容. 这 一般是这样的场景, ...

  10. Android 四种启动模式

    2019独角兽企业重金招聘Python工程师标准>>> launchMode <activity android:name=".activity.MainActivi ...

最新文章

  1. 2019年互联网趋势报告
  2. 邬贺铨:工业物联网的技术与前景
  3. 苹果智能车芯片已基本就绪!最新造车进展曝光,股价一夜暴涨4000亿
  4. WPF 获得文件夹路径 FolderBrowserDialog
  5. java两种异常_JAVA两种异常的区别 (转)
  6. English trip -- MC(情景课)3 C Do you have a sister?
  7. iphone保修期多久_小心!教你如何鉴别 iPhone 翻新机,黑机千万别买!
  8. 【重点】Batch Normalization的诅咒
  9. 计算机二级C语言判断标准,2012年计算机等级考试二级C语言常见问题:标准输入输出库...
  10. Ubuntu 朗文不发音问题
  11. 测试用例设计方法---场景法
  12. Java项目中 实体类(ENTITY,VO,DTO)理解
  13. java删除占用的文件_「强力删除」自己用命令强制删除占用的文件或文件夹 - seo实验室...
  14. [ZT]千兆光纤 GBIC和SFP接口规格介绍
  15. json对象、json字符串的区别和相互转换
  16. 内部寄存器:通用寄存器、控制寄存器、段寄存器
  17. 计算机视觉专业排名,2020美国人工智能专业排名TOP10!
  18. Google PR值原理和详细解说
  19. android 系统 dpi设置,安卓系统DPI的划分
  20. 基于STM32的智能GPS定位系统(云平台、小程序)

热门文章

  1. 男程序员思维VS女程序员思维
  2. 一睹为快,推特NFT网红热议的Bored Ape是个啥?
  3. 计算机进化量子攻略,《超进化物语》量子巨龙怎么打 量子巨龙打发解析
  4. ntpd与ntpdate
  5. dw中HTML做表格代码,DW制作怎样在网页中插入表格?
  6. 如何录制电脑屏幕并且生成视频
  7. Unix 命令 - wc
  8. IntelliJ IDEA十大效率(摸鱼)插件
  9. 江苏警官学院计算机专业咋样,江苏警官学院排名2021 江苏排名第45全国排名第631...
  10. linux查看进程在网卡使用率