`
zhangwei_david
  • 浏览: 468486 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java 设计模式-桥接模式(Bridge)

 
阅读更多

  桥接模式(Bridge)是关注抽象类的的设计模式。桥接模式的意图是将抽象类与抽象方法的实现相互分离来实现解耦,以便二者可以相互独立地变化。

     比如面馆的面条,有的人喜欢吃的辣一点,有人喜欢淡一点;有的人爱吃牛肉面,有人爱吃三鲜面。不管是什么面都是面条。但是每种面条的口味可以按个人的喜好进行调节。这个场景就可以使用桥接模式很好的解决。

/**
 * 面条的抽象类
 * @author Lenovo
 * @version $Id: Noodle.java, v 0.1 2014年9月26日 下午5:26:06 Lenovo Exp $
 */
public abstract class Noodle {

    /**
     * 苗条的口味风格
     */
    private Style style;

    public Noodle(Style style) {
        super();
        this.style = style;
    }

    public void eat() {
        System.out.println("吃 " + style.getPreference() + " 一点的 " + getName() + " 面条");
    }

    /**
     * 抽象方法,获取面条的类型
     *
     * @return
     */
    protected abstract String getName();

    /**
     * Getter method for property <tt>style</tt>.
     *
     * @return property value of style
     */
    public Style getStyle() {
        return style;
    }

    /**
     * Setter method for property <tt>style</tt>.
     *
     * @param style value to be assigned to property style
     */
    public void setStyle(Style style) {
        this.style = style;
    }

}
/**
 *
 * @author Lenovo
 * @version $Id: Style.java, v 0.1 2014年9月26日 下午5:24:35 Lenovo Exp $
 */
public interface Style {

    /**
     * 获取跟人的偏好
     *
     * @return
     */
    public String getPreference();

}

 目前面馆提供两种面条,牛肉面,三鲜面

/**
 *
 * @author Lenovo
 * @version $Id: BeefNoodle.java, v 0.1 2014年9月26日 下午5:35:20 Lenovo Exp $
 */
public class BeefNoodle extends Noodle {

    /**
     * @param style
     */
    public BeefNoodle(Style style) {
        super(style);
    }

    /**
     * @see com.cathy.demo.pattern.bridge.Noodle#getName()
     */
    @Override
    protected String getName() {
        return "牛肉";
    }

}

/**
 *
 * @author Lenovo
 * @version $Id: SeafoodNoodle.java, v 0.1 2014年9月26日 下午5:36:33 Lenovo Exp $
 */
public class SeafoodNoodle extends Noodle {

    /**
     * @param style
     */
    public SeafoodNoodle(Style style) {
        super(style);
    }

    /**
     * @see com.cathy.demo.pattern.bridge.Noodle#getName()
     */
    @Override
    protected String getName() {
        return "三鲜";
    }

}

 

/**
 *
 * @author Lenovo
 * @version $Id: HotStyle.java, v 0.1 2014年9月26日 下午5:37:38 Lenovo Exp $
 */
public class HotStyle implements Style {

    /**
     * @see com.cathy.demo.pattern.bridge.Style#getPreference()
     */
    public String getPreference() {
        return "辣";
    }

}

/**
 *
 * @author Lenovo
 * @version $Id: LightStyle.java, v 0.1 2014年9月26日 下午5:38:18 Lenovo Exp $
 */
public class LightStyle implements Style {

    /**
     * @see com.cathy.demo.pattern.bridge.Style#getPreference()
     */
    public String getPreference() {
        return "清淡";
    }

}

 测试:

/**
 *
 * @author Lenovo
 * @version $Id: Client.java, v 0.1 2014年9月26日 下午5:36:54 Lenovo Exp $
 */
public class Client {

    /**
     *
     * @param args
     */
    public static void main(String[] args) {
        Noodle n = new BeefNoodle(new HotStyle());
        n.eat();
        n = new BeefNoodle(new LightStyle());
        n.eat();

        n = new SeafoodNoodle(new HotStyle());

        n.eat();

        n = new SeafoodNoodle(new LightStyle());

        n.eat();
    }

}

 结果是:

吃 辣 一点的 牛肉 面条
吃 清淡 一点的 牛肉 面条
吃 辣 一点的 三鲜 面条
吃 清淡 一点的 三鲜 面条

 

0
0
分享到:
评论

相关推荐

    JAVA设计模式-day2.pdf

    JAVA设计模式-day2,请的行业大能讲得课程,涉及:创建模式(5种: 1、 工厂方法模式(Factory Method); 2、 抽象工厂模式; 3、 单例模式(Singleton) • 4、 建造者模式(Builder); 5、 原型模式(Prototype...

    java设计模式之桥接模式(Bridge)

    主要为大家详细介绍了java设计模式之桥接模式Bridge,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    java版本二十三种设计模式.zip

    - 23种设计模式 - 工厂方法模式(Factory Method) - 抽象工厂模式(Abstract Factory) - 单例模式(Singleton) - 建造者模式(Builder) - 原型模式(Prototype) - 代理模式(Proxy) - 适配器模式(Adapter) - 装饰...

    Java设计模式之桥接模式

    桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使它们都可以独立地变化。更容易理解的表述是:实现系统可从多种维度分类,桥接模式将各维度抽象出来,各维度独立变化,之后可通过聚合,将各维度组合...

    [Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker

    《java设计模式(第2版)》通过一个完整的java项目对经典著作design patterns一书介绍的23种设计模式进行了深入分析与讲解,实践性强,却又不失对模式本质的探讨。本书创造性地将这些模式分为5大类别,以充分展现各个...

    Java高手真经 - Java Web系统设计与架构 源代码(一)设计模式

    Java高手真经 - Java Web系统设计与架构 源代码(一)设计模式 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1...

    33种JAVA设计模式DEMO

    桥接模式(Bridge Pattern) 过滤器模式(Filter、Criteria Pattern) 组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy...

    java设计模式教程+源代码

    Bridge ( 桥接模式 ) Composite ( 组合模式 ) Decorator ( 装饰模式 ) Facade ( 外观模式 ) Flyweight ( 享元模式 ) Proxy ( 代理模式 ) Chain of Responsibility ( 责任链模式 ) Command ( 命令模式 ) ...

    研磨设计模式-part2

    完整清晰版,完美书签. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。...第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录BUML简介 参考文献

    研磨设计模式-part4

    完整清晰版,完美书签. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。...第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录BUML简介 参考文献

    研磨设计模式-part3

    完整清晰版,完美书签. 《研磨设计模式》完整覆盖GoF讲述的23个设计模式并加以细细研磨。...第24章 桥接模式(Bridge) 第25章 访问者模式(Visitor) 附录A常见面向对象设计原则 附录BUML简介 参考文献

    用Java实现23种设计模式

    用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...

    java设计模式源码-DesignPattern:设计模式(Java实现源码)

    桥接模式(bridgePattern) 过滤器模式(filterPattern) 组合模式(compositePattern) 装饰器模式(decoratorPattern) 外观模式(facadePattern) 享元模式(flyweightPattern) 代理模式(proxyPattern) 责任链模式...

    design-pattern-java.pdf

    桥接模式-Bridge Pattern 处理多维度变化——桥接模式(一) 处理多维度变化——桥接模式(二) 处理多维度变化——桥接模式(三) 处理多维度变化——桥接模式(四) 组合模式-Composite Pattern 树形结构的处理...

    Java面试 java设计模式整理 单例、工厂、策略等 面试使用,学习使用

    java的设计模式大体上分为三大类: 2 设计模式遵循的原则有6个: 2 1. 工厂模式(Factory Method) 2 2. 抽象工厂模式(Abstract Factory) 3 3. 单例模式(Singleton) 4 4.建造者模式(Builder) 4 5. 原型模式...

    单例模式源码java-DesignPattern:在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在

    在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在源码中的使用,每种设计模式都举了一个简单的小例子来进行实现,并加以注释 包名解释 一、DesignPattern 1.1 创建型模式 ...

    桥接模式(Bridge Pattern)原理图

    桥接模式是一种结构型设计模式,它的目的是将抽象化与实现化解耦,使得它们可以独立变化。这种模式主要用于处理当一个类存在两个或多个独立的变化的维度时的情况,例如,当一个类的抽象部分和实现部分可能发生变化,...

    Java设计模式,并加上个人理解

    1. 设计模式 1.1 含义 1.2 作用 1.3 设计原则 1.4 分类 2. 简单工厂模式 (SimpleFactoryPattern) 3. 工厂方法模式 (Factory Method) 4. 单例模式 (Singleton) 5. 抽象工厂模式 (Abstract Factory) 6. ...

    Java的23种设计模式

    工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)模式都是比较常用的,不同的项目有不同的设计方向.....

    23种java版设计模式源码案例.zip

    23种java版设计模式源码案例.zip 0.目录 创建型模式(creational) 简单工厂(simplefactory) 动态工厂(dynamic) 抽象工厂(abstract) 单例模式(singleton) 建造者模式(builder) 原型模式(prototype) 结构型模式...

Global site tag (gtag.js) - Google Analytics