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

简介: 桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者独立的变化”。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者独立的变化”。这句话很短,这句话有三个关键词,也就是抽象化、实现化和脱耦。理解这三个词所代表的概念是理解桥梁模式用意的关键。桥梁模式在Java应用中一个非常典型的例子就是JDBC

 目录

前言

一、了解桥梁模式

1.桥梁模式的用意

2.桥梁模式的优点

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

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

抽象类代码Airplane

修正抽象类代码

实现类代码

具体实现类代码

测试程序

运行结果

总结


前言

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


一、了解桥梁模式

1.桥梁模式的用意

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

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

    2.桥梁模式的优点

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

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

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

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

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

      image.gif

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

      抽象类代码Airplane(飞机)

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

      image.gif

      实现类代码

      AirplaneMaker

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

      image.gif

      修正抽象类代码

      空客机 Airbus

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

      image.gif

      波音Boeing

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

      image.gif

      麦道MD

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

      image.gif

      具体实现类代码

      货机 CargoPlane

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

      image.gif

      客机 PassengerPlane

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

      image.gif

      测试程序

      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();
          }
      }

      image.gif

      运行结果

      image.gif


      目录
      相关文章
      |
      9天前
      |
      Java
      轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
      本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
      58 6
      |
      5天前
      |
      Java Android开发
      Eclipse 创建 Java 项目
      Eclipse 创建 Java 项目
      22 4
      |
      9天前
      |
      人工智能 监控 数据可视化
      Java智慧工地信息管理平台源码 智慧工地信息化解决方案SaaS源码 支持二次开发
      智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
      26 3
      |
      10天前
      |
      SQL Java 数据库连接
      从理论到实践:Hibernate与JPA在Java项目中的实际应用
      本文介绍了Java持久层框架Hibernate和JPA的基本概念及其在具体项目中的应用。通过一个在线书店系统的实例,展示了如何使用@Entity注解定义实体类、通过Spring Data JPA定义仓库接口、在服务层调用方法进行数据库操作,以及使用JPQL编写自定义查询和管理事务。这些技术不仅简化了数据库操作,还显著提升了开发效率。
      24 3
      |
      13天前
      |
      Java 编译器 开发者
      Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
      本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
      31 2
      |
      15天前
      |
      运维 自然语言处理 供应链
      Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
      通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
      45 3
      |
      13天前
      |
      前端开发 Java 数据库
      如何实现一个项目,小白做项目-java
      本教程涵盖了从数据库到AJAX的多个知识点,并详细介绍了项目实现过程,包括静态页面分析、数据库创建、项目结构搭建、JSP转换及各层代码编写。最后,通过通用分页和优化Servlet来提升代码质量。
      34 1
      |
      18天前
      |
      Java 数据库连接 数据库
      深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
      在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
      17 1
      |
      24天前
      |
      搜索推荐 Java 数据库连接
      Java|在 IDEA 里自动生成 MyBatis 模板代码
      基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
      30 6
      |
      20天前
      |
      JavaScript Java 项目管理
      Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
      基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。