桥梁模式练习:飞机信息系统(JAVA练习项目&IDEA)
  ehrZuhofWJiC 20天前 19 0

桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者独立的变化”。

一、了解桥梁模式

1.桥梁模式的用意

桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者独立的变化”。这句话很短,这句话有三个关键词,也就是抽象化、实现化和脱耦。理解这三个词所代表的概念是理解桥梁模式用意的关键。

  • 从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征,就是抽象化。
  • 抽象化给出的具体实现,就是实现化。一个类的实例就是这个类的实例化,一个具体子类就是它的抽象超类的实例化。
  • 两个实体的行为的有某种强关联。将它们的强关联去掉,就是耦合的脱耦。在这里,脱耦是指将抽象化和实例化之间的耦合解脱开,或者是将它们之间的强关联改成弱关联。

2.桥梁模式的优点

  • 分离抽象部分和实现部分
    桥梁模式分离了抽象部分和实现部分,从而极大的提高了系统的灵活性。让抽象部分和实现部分独立出来,分别定义接口,这有助于对系统进行分层,从而产生更好的结构化的系统。
  • 更好的扩展性
    桥梁模式使得抽象部分和实现部分可以分别独立的扩展,而不会相互影响,从而大大提高了系统的可扩展性

3.桥梁模式在Java中的使用

桥梁模式在Java应用中一个非常典型的例子就是JDBC驱动器。JDBC为所有的关系型数据库提供一个通用的界面。一个应用系统动态的选择一个合适的驱动器,然后通过驱动器向数据库引擎发出指令。这个过程就是将抽象角色的行为委派给实现角色的过程。

JDBC这种架构,把抽象部分和具体实现部分分离开来,从而使得抽象部分和具体实现部分都可以独立的扩展。对于应用程序而言,之遥选用不同的驱动,就可以让程序操作不同的数据库,而无需更改应用程序,从而实现在不同的数据库上移植;对于驱动程序而言,为数据库实现不同的驱动程序,并不会影响应用程序。

二、桥梁模式的例子(飞机信息系统)

桥梁模式练习:飞机信息系统(JAVA练习项目&IDEA)

首先Airplane扮演抽象化角色,它声明出所有修正抽象化角色所需的接口 

抽象类代码Airplane(飞机)

public abstract class  Airplane {
    public abstract void fly();
        AirplaneMaker airplaneMaker;
}

实现类代码 

AirplaneMaker

abstract public class  AirplaneMaker{
    abstract public void produce();
}

修正抽象类代码

空客机 Airbus

public class Airbus extends AirplaneMaker {
    public void produce(){
        System.out.println("制造商:Airbus!");
    }
}

波音Boeing

public class  Boeing extends AirplaneMaker{
    public void produce(){
        System.out.println("制造商:Boeing!");
    }
}

麦道MD

public class MD extends AirplaneMaker{

    public void produce(){
        System.out.println("制造商:MD!");
    }
}

具体实现类代码

货机 CargoPlane

public class  CargoPlane extends Airplane{
    public void fly(){
        System.out.println("飞机类型:载货飞机!");
    }
}

客机 PassengerPlane

public class  PassengerPlane extends Airplane {
    public void fly(){
        System.out.println("飞机类型:载客飞机!");
    }
}

测试程序

public class Client {
    public static void  main(String[] args) {
        // TODO Auto-generated method stub
        AirplaneMaker mk=new Airbus();
        AirplaneMaker boe=new Boeing();
        AirplaneMaker md=new MD();
        Airplane lx=new CargoPlane();
        Airplane lx1=new PassengerPlane();
        mk.produce();
        boe.produce();
        md.produce();
        lx.fly();
        lx1.fly();
    }
}

运行结果

桥梁模式练习:飞机信息系统(JAVA练习项目&IDEA)

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 20天前 0

暂无评论

推荐阅读
ehrZuhofWJiC