`
zhangwei_david
  • 浏览: 476124 次
  • 性别: 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常用设计模式-桥接模式

    桥接模式(Bridge Pattern)是一种常用的设计模式,它将抽象化和实现化解耦,使用封装、聚合以及继承等基本技术,将两个独立变化的维度通过抽象化的方式进行桥接,从而降低了它们之间的耦合度,使得系统更加灵活。...

    JAVA设计模式-chm版

    Java设计模式是软件开发中的一种最佳实践,它总结了在解决特定问题时程序员们经常采用的有效方法。这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的...

    JAVA设计模式---100%推荐

    这篇名为"JAVA设计模式---100%推荐"的资源,可能是对Java设计模式的深入解析,旨在帮助开发者更好地理解和应用这些模式。 设计模式通常分为三类:创建型、结构型和行为型。创建型模式涉及对象的实例化过程,如单例...

    JAVA设计模式-day2.pdf

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

    JAVA设计模式--入门

    **Java设计模式——入门** 设计模式是软件开发中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。Java设计模式是面向对象编程中的一个重要概念,可以帮助开发者编写可复用、可维护、易于理解的代码。这...

    设计模式之桥接模式

    桥接模式(Bridge Pattern)是设计模式中结构型模式的一种,它的主要目的是将抽象部分与实现部分解耦,使得它们可以独立地进行变化。在Java编程中,这种模式的应用可以帮助我们构建更加灵活、可扩展的代码结构。 ...

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

    桥接模式(Bridge)是一种结构型设计模式,旨在将抽象部分与其实现部分分离,使得它们可以独立地进行变化。在Java编程中,桥接模式可以帮助我们处理多维度的变化,避免过度使用继承导致的类爆炸问题。 在桥接模式中...

    设计模式11桥接模式

    桥接模式(Bridge Pattern)是一种用于将抽象部分与其实现部分分离的设计模式,这样两者就可以独立变化。该模式属于对象结构型模式,有时也被称为柄体(Handle and Body)模式或接口(Interface)模式。 **英文定义...

    设计模式之桥接模式,内含可运行代码

    桥接模式是软件设计模式中的一种结构型模式,它的主要目的是为了实现抽象和实现的解耦,使得两者可以独立地进行扩展。在桥接模式中,抽象类(Abstraction)不直接引用具体实现(Implementation),而是通过一个桥接...

    《Java设计模式》课后答案-刘伟.rar

    《Java设计模式》是刘伟教授的一本关于设计模式的教材,主要面向高等学校的学生和对Java编程有深入兴趣的开发者。设计模式是软件工程中的一种重要思想,它封装了在特定场景下的问题解决方案,可以提高代码的可读性、...

    JAVA design pattern-java设计模式

    Java设计模式是软件工程中的一种最佳实践,它提供了一种在特定情况下解决常见问题的标准化方法。设计模式不是具体的代码或库,而是一种通用解决方案的描述,可以应用于各种编程语言,包括Java。在这个名为"JAVA ...

    桥接模式和策略模式的区别,内含可运行代码和两者详细区别

    桥接模式和策略模式是软件设计模式中的两种重要模式,它们在实现上有着相似之处,但各自的应用场景和设计理念有所不同。下面将详细阐述这两种模式的特点、区别以及它们在实际编程中的应用。 首先,桥接模式(Bridge...

    设计模式-Java语言中的应用(pdf)

    《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。设计模式是软件工程领域中经过实践验证的、解决常见问题的有效方案,它们代表了在特定上下文中,针对特定问题的最优...

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

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

    设计模式-可复用面向对象软件的基础,JAVA设计模式

    Java设计模式是Java开发中的核心元素,它们分为三类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的创建,如单例模式(Singleton)、工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory...

    java-design-patterns-master_JAVAdesignpattens_java_design_

    《Java设计模式实战详解》 在Java编程领域,设计模式是一种通用、可重用的解决方案,用于解决在软件设计中常见的问题。这个压缩包“java-design-patterns-master”显然是一个专注于Java设计模式的学习资源,旨在...

    Java设计模式之桥接模式

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

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...

    设计模式之桥接模式.pdf

    桥接模式(Bridge Pattern)是一种常用的结构型设计模式,它主要用于解决抽象部分和实现部分的耦合问题。这种模式通过将抽象和实现分离,使得两者可以独立变化。这种设计方式不仅提高了系统的可扩展性,还简化了系统...

    《Java设计模式》模拟试题参考答案及评分标准-刘伟(20180723).pdf

    根据提供的文档信息,我们可以从这份《Java设计模式》模拟试题参考答案及评分标准中提炼出以下关键知识点: ### 一、基础知识与概念 #### 1. 设计模式基础概念 - **里氏替换原则**(Liskov Substitution Principle...

Global site tag (gtag.js) - Google Analytics