【设计模式】结构型04桥接模式(Bridge Pattern)
学习地址:http://www.runoob.com/design-pattern/bridge-pattern.html
桥接模式(Bridge Pattern)
桥接模式(Bridge pattern)属于结构型模式,它提供一个桥接结构,来实现二者的解耦。
这种模式使用一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。
博主餐好了几个博客,于是顺手也采取了颜色与形状的简单例子。
主要解决:个人理解,对类的多维切分,从某种角度上方便了扩展。
何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。
如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。
代码:
1、形状以及桥梁抽象类:
package com.pat.bridge;
/**
* 这是桥接模式中的桥梁(形状抽象类)
* @author ZX
*
*/
public abstract class ShapeBridge {
Color color;
public abstract void draw();
}
/**
* 具体形状
* @author ZX
*
*/
class Circle extends ShapeBridge{
String shape="圆形";
public void draw() {
color.paint(shape);
}
public Circle(Color color) {
this.color=color;
}
}
class Squre extends ShapeBridge{
String shape="正方形";
public void draw() {
color.paint(shape);
}
public Squre(Color color) {
this.color=color;
}
}
2、颜色类,被桥接对象
package com.pat.bridge;
/**
* 颜色接口
* @author ZX
*
*/
public interface Color {
void paint(String shape);
}
/**
* 具体颜色
* @author ZX
*
*/
class Red implements Color{
@Override
public void paint(String shape) {
if(shape==null||"".equals(shape)) {
System.out.println("红色色块");
}else {
System.out.println("红色"+shape);
}
}
}
class Blue implements Color{
@Override
public void paint(String shape) {
if(shape==null||"".equals(shape)) {
System.out.println("蓝色色块");
}else {
System.out.println("蓝色"+shape);
}
}
}
3、测试类:
package com.pat.bridge;
public class Test {
public static void main(String[] args) {
Red red = new Red();
Squre sq = new Squre(red);
sq.draw();
}
}
4、结果:
红色正方形
【设计模式】结构型04桥接模式(Bridge Pattern)的更多相关文章
- 【设计模式】桥接模式 Bridge Pattern
开篇还是引用吕振宇老师的那篇经典的文章<设计模式随笔-蜡笔与毛笔的故事>.这个真是太经典了,没有比这个例子能更好的阐明桥接模式了,这里我就直接盗来用了. 现在市面上卖的蜡笔很多,各种型号, ...
- python 设计模式之桥接模式 Bridge Pattern
#写在前面 前面写了那么设计模式了,有没有觉得有些模式之间很类似,甚至感觉作用重叠了,模式并不是完全隔离和独立的,有的模式内部其实用到了其他模式的技术,但是又有自己的创新点,如果一味地认为每个模式都是 ...
- 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern)
原文:乐在其中设计模式(C#) - 桥接模式(Bridge Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 桥接模式(Bridge Pattern) 作者:webabcd 介绍 ...
- 二十四种设计模式:桥接模式(Bridge Pattern)
桥接模式(Bridge Pattern) 介绍将抽象部分与它的实现部分分离,使它们都可以独立地变化. 示例有一个Message实体类,对它的操作有Insert()和Get()方法,现在使这些操作的抽象 ...
- 桥接模式(Bridge Pattern)
1,定义 桥接模式(Bridge Pattern),也称为桥梁模式,其用意是将抽象化与实现化脱耦,使得两者可以独立的变化,它可以使软件系统沿着多个方向进行变化,而又不引入额外的复杂 ...
- 跟着实例学习设计模式(9)-桥接模式bridge(结构型)
桥接模式属于结构型设计模式. 设计意图:将抽象部分与实现部分分离.使它们都能够独立的变化. 一看到设计意图,大家可能有些发懵,我们看到的继承和接口不都是抽象和实现分离的吗?尤其是接口和抽象类都是这种实 ...
- Net设计模式实例之桥接模式( Bridge Pattern)
一.桥接模式简介(Brief Introduction) 桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使的抽象和实现都可以独立地变化. Decouple an abstra ...
- 转:设计模式-----桥接模式(Bridge Pattern)
转自:http://www.cnblogs.com/houleixx/archive/2008/02/23/1078877.html 记得看原始链接的评论. 学习设计模式也有一段时间了,今天就把我整理 ...
- C#设计模式——桥接模式(Bridge Pattern)
一.概述在软件开发中,我们有时候会遇上一个对象具有多个变化维度.比如对汽车对象来说,可能存在不同的汽车类型,如公共汽车.轿车等,也可能存在不同的发动机,如汽油发动机.柴油发动机等.对这类对象,可应用桥 ...
随机推荐
- 工作流管理平台Airflow
Airflow 1. 引言 Airflow是Airbnb开源的一个用Python写就的工作流管理平台(workflow management platform).在前一篇文章中,介绍了如何用Cront ...
- ubuntu12.04下编译安装x86平台qt库qt-everywhere-opensource-src-4.8.5
本文记录PC(x86)下安装Linux/X11版Qt 开发环境.下载页面:http://qt-project.org/downloads ARM嵌入式版本qt库的编译安装详见<unbunt12. ...
- cacti由snmp监控带宽
1.安装和配置snmp a. yum install -y net-snmp net-snmp-utils b. chkconfig snmpd on c. chkconfig –list|grep ...
- 创建一个显示所有预定义系统颜色的ListBox
原文 Creating a ListBox that Shows All Predefined System Colors 该System.Windows.SystemColors类包含了一系列揭露当 ...
- Distinct去除重复项
之前在做权限模块时,因不同角色可能拥有相同的菜单,导致呈现在浏览器上时出现重复菜单项,所以需要在获取用户拥有菜单项时需要过滤重复项, 用到了Distinct,两个重载 public static IQ ...
- 【C++智能指针 auto_ptr】
<More Effective C++>ITEM M9他提到auto_ptr.说是当异常产生的时候.怎么释放为对象分配的堆内存,避免反复编写内存释放语句. PS:这里书里面提到函数退出问题 ...
- tornado+ansible+twisted+mongodb操作和维护系统开发自己主动(一个)
前段时间去了解ansible配置管理(http://blog.csdn.net/column/details/ansible.html anisble配置工具盒翻译),我感觉很强烈,认为短期内to ...
- WPF元素绑定
原文:WPF元素绑定 数据绑定简介:数据绑定是一种关系,该关系告诉WPF从源对象提取一些信息,并用这些信息设置目标对象的属性.目标属性是依赖项属性.源对象可以是任何内容,从另一个WPF元素乃至ADO. ...
- Emgu-WPF 激光雷达研究-移动物体检测
原文:Emgu-WPF 激光雷达研究-移动物体检测 接上篇: https://blog.csdn.net/u013224722/article/details/80738619 先pose出效果图,下 ...
- liunx 系统 一键安装
本文转自:http://hi.baidu.com/iamcyh/item/e777eb81ba90ed5a26ebd9b0 linux VPS环境(MySQL/Apache/PHP/Nginx)一键安 ...