实验9:桥接模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解桥接模式的动机,掌握该模式的结构;
2、能够利用桥接模式解决实际问题。
[实验任务一]:两个维度的桥接模式
用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。
实验要求:
1. 对应的类图如下;
2. 源代码如下;
package a9; public abstract class Road { protected Transport transport; public void setTransport(Transport tr) { this.transport=tr; } public abstract void drive(); } package a9; public class Liqing extends Road{ public void drive() { transport.run(); System.out.println("行驶在沥青路"); } } package a9; public class Shuini extends Road{ public void drive() { transport.run(); System.out.println("行驶在水泥路"); } } package a9; public interface Transport { public void run(); } package a9; public class Bus implements Transport{ @Override public void run() { System.out.print("Bus"); } } package a9; public class Car implements Transport{ @Override public void run() { System.out.print("Car"); } } package a9; import java.util.*; public class Client { public static void main(String[] args) { Transport transport = null; Road road = null; System.out.println("请选择:1、Car/水泥路 2、Car/沥青路 3、Bus/水泥路 4、Bus/沥青路"); Scanner input=new Scanner(System.in); int i=input.nextInt(); if(i==1) { transport=(Transport)new Car(); road=(Road)new Shuini(); }else if(i==2) { transport=(Transport)new Car(); road=(Road)new Liqing(); }else if(i==3){ transport=(Transport)new Bus(); road=(Road)new Shuini(); }else if(i==4) { transport=(Transport)new Bus(); road=(Road)new Liqing(); }else { System.out.println("输入无效!"); } road.setTransport(transport); road.drive(); } }