首页 > 其他分享 >Tutorial 9_桥接模式

Tutorial 9_桥接模式

时间:2022-10-20 17:33:15浏览次数:44  
标签:桥接 void vehicle 模式 class Vehicle new public Tutorial

两个维度的桥接模式

用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。

类图

 

 代码

Vehicle.java
package qiaojie;

public interface Vehicle {
    
    public void run();
    
}

Road.java
package qiaojie;

public abstract class Road {
    
    protected Vehicle vehicle;
    public void setVehicle(Vehicle ve) {
        this.vehicle=ve;
    }
    public abstract void drive();
    
}

Shuini.java
package qiaojie;

public class Shuini extends Road{
    
    public void drive() {
        vehicle.run();
        System.out.println("行驶在水泥路");
    }
    
}
Liqing.java
package qiaojie;

public class Liqing extends Road{
    
    public void drive() {
        vehicle.run();
        System.out.println("行驶在沥青路");
    }
    
}
Bus.java
package qiaojie;

public class Bus implements Vehicle{
    
    @Override
    public void run() {
        System.out.print("Bus");    
    }
    
}

Car.java
package qiaojie;

public class Car implements Vehicle{
    
    @Override
    public void run() {
        System.out.print("Car");    
    }
    
}

Main.java
package qiaojie;

import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Vehicle vehicle = 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) {
            vehicle=(Vehicle)new Car();
            road=(Road)new Shuini();
        }else if(i==2) {
            vehicle=(Vehicle)new Car();
            road=(Road)new Liqing();
        }else if(i==3){
            vehicle=(Vehicle)new Bus();
            road=(Road)new Shuini();
        }else if(i==4) {
            vehicle=(Vehicle)new Bus();
            road=(Road)new Liqing();
        }else {
            System.out.println("输入无效!");
        }
        road.setVehicle(vehicle);
        road.drive();
    }
    
}

 

 

 

 

 

 

 

#include<iostream>
using namespace std;
class transport
{
public :
    transport(){}
    virtual ~transport(){}
    virtual void bedrive()=0;
};

class bus :public transport
{
public:
    bus(){}
    virtual~bus(){}
    void bedrive(){cout<<"bus"<<endl;}
};

class car :public transport
{
public:
    car(){}
    virtual~car(){}
    void bedrive(){cout<<"car"<<endl;}
};




class road
{
public:
    road():_instance(NULL){}
    virtual~road(){}
    void settransport(transport *instance)
    {
        _instance=instance;
    }
    virtual void drive()=0;
protected:
        transport *_instance;

};

class shuini :public road
{

public:
    shuini(){}
    virtual~shuini(){}
    void drive(){cout<<"行驶在水泥路";_instance->bedrive();}
};

class liqing :public road
{
    liqing(){}
    virtual~liqing(){}
    void drive(){cout<<"行驶在沥青路";_instance->bedrive();}
};

int main()
{
    road *ro=new shuini;
    transport *tr=new bus;
    ro->settransport(tr);
    ro->drive();
    delete ro;
    delete tr;

    system("pause");
    return 0;
}

 

标签:桥接,void,vehicle,模式,class,Vehicle,new,public,Tutorial
From: https://www.cnblogs.com/manmmm/p/16810628.html

相关文章

  • Collections 类中设计模式的应用
    装饰器模式Collections类是一个集合容器的工具类,提供了很多静态方法,用来创建各种集合容器,比如通过unmodifiableColletion()静态方法,来创建UnmodifiableCollection类......
  • Calendar 类中设计模式的应用
    包名:java.util.Calendar工厂模式Calendar类提供了大量跟日期相关的功能代码,同时,又提供了一个getInstance()工厂方法,用来根据不同的TimeZone和Locale创建不同的Ca......
  • 享元模式
    实验13:享元模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解享元模式的动机,掌握该模式的结构;2、能够利用享元模式解决实际问题。   ......
  • 9000字,唠唠架构中的设计模式
    1设计模式概述​ 软件设计模式(SoftwareDesignPattern),俗称设计模式,设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设......
  • MybatisPlus对租户模式的支持(一)
    前言最近接到一个任务,要将现有的用户系统改成租户模式。改造成租户模式最简单的方式就是为需要进行数据隔离的表加上租户id字段,然后前端调接口查询数据时,根据当前用户的租......
  • 设计模式之UML类图
    UML图示简介在UML中,类使用包含类名、属性和操作且带有分割线的长方形来表示,如图所示,定义一个Student类,它包含属性name、age和id,以及操作modifyInfo()。其对应的......
  • 【多线程那些事儿】如何使用C++写一个线程安全的单例模式?
    如何写一个线程安全的单例模式?单例模式的简单实现单例模式大概是流传最为广泛的设计模式之一了。一份简单的实现代码大概是下面这个样子的:classsingleton{public: s......
  • 数字化转型后企业的管理模式有哪些改变呢?
    数字化转型后的企业在管理模式上整体呈现的就是数字化的管理,这是因为数字化转型的主题就是要构建“业务数字化、数字资产化、资产服务化、服务业务化”闭环,通过数字化技术能......
  • JAVA设计模式-代理模式
    JAVA设计模式-代理模式一、介绍代理模式是一种结构型模式,它指的是给某一个对象提供一个代理对象,并且由代理对象控制原有对象的引用,可以增强原有对象的功能以及降低系统......
  • Javascript事件设计模式(七)
    一:事件设计概述事件机制可以使程序逻辑更加符合现实世界,在JavaScript中很多对象都有自己的事件,例如按钮就有onclick事件,下拉列表框就有onchange事件,通过这些事件可......