设计模式——桥接模式
来源:互联网 发布:股票价值分析软件 编辑:程序博客网 时间:2024/05/22 00:51
一、概念
桥接模式(Bridge)是一种结构模式,它主要应对的是:由于实际的需要,某个类具有两个或两个以上的维度变化,如果只是用继承将无法实现这种需要,或者使得设计变得相当臃肿。
桥接模式的做法是把变化部分抽象出来,使变化部分与主类分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。
桥接模式的结构图:
接口代表面条是否添加辣椒(该接口代表了面条在辣味风格这个维度上的变化):
public interface Peppery{ String style(); }实现类代表辣椒的风格:
public class PepperyStyle implements Peppery{ public String style(){ return "辣味"; }}public class PlainStyle implements Peppery{ public String style(){ return "清淡" ; }}
对于系统而言,辣味风格这个维度上的变化是固定的,程序必须面对的,程序使用桥接模式将辣味风格这个维度的变化分离出来了,避免与牛肉、猪肉材料风格这个维度的变化耦合在一起。
接下来是AbstractNoodle抽象类,其本身可以包含很多实现类,不同实现类则代表了面条在材料风格这个维度上的变化。
public abstract class AbstractNoodle{ protected Peppery style; public AbstractNoodle(Peppery style){ this.style = style; } public abstract void eat();}
这样就可以完成辣味风格、材料风格两个维度上变化的组合
AbstractNoodle抽象类可看做是一个桥梁,它被用来“桥接”面条的材料风格的改变与辣味风格的改变,使面条的特殊属性得到无绑定的扩充。
以下是猪肉面实现类:
public class PorkNoodle extends AbstractNoodle{ public PorkyNodle(Peppery style){ super(style); } public void eat(){ System.out.println( "猪肉面条的口味:"+super.style.style()); }}测试类:
public class Test{ public static void main(String[] args){ AbstractNoodle noodle = new PorkNoodle(new PepperyStyle()); noodle.eat(); AbstractNoodle noodle = new PorkNoodle(new PlainStyle()); noodle.eat(); }}
转载:http://blog.163.com/xiaokangzhijia@126/blog/static/1659548562010111843618596/
转载:http://www.cnblogs.com/draem0507/p/3794530.html
0 0
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 【设计模式】——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 设计模式——桥接模式
- 单点登录系统
- Unity5打包assetbundle
- python的各种模块安装及其两个版本一起安装
- Java Web 与 QtQuick
- JDBC的增删改查
- 设计模式——桥接模式
- Mac系统如何编辑hosts文件
- Bitmap的加载和Cache————读书笔记
- A*算法入门
- Android系统的音量控制
- 大钉骑马走江湖 北京林业大学校赛。
- Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM:
- 第一次使用Android Studio 2.1需要知道的配置
- PHPExcel在linux环境下导出报500错误