首页 > 其他分享 >软件设计-Tutorial09

软件设计-Tutorial09

时间:2024-11-04 09:20:14浏览次数:2  
标签:Tutorial09 软件设计 drive class road Vehicle public Road

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

类图:

```mermaid
classDiagram
    class Road {
        <<interface>>
        +drive()
    }

    class CementRoad {
        +drive()
    }

    class AsphaltRoad {
        +drive()
    }

    class Vehicle {
        +drive()
    }

    class Car {
        +drive()
    }

    class Bus {
        +drive()
    }

    Road <|-- CementRoad
    Road <|-- AsphaltRoad
    Vehicle <|-- Car
    Vehicle <|-- Bus
    Vehicle --> Road : uses
```

源码:

package Tutorial09v2;

public interface Road {
    void drive();
}

class CementRoad implements Road {
    @Override
    public void drive() {
        System.out.println("在水泥路上行驶");
    }
}

class AsphaltRoad implements Road {
    @Override
    public void drive() {
        System.out.println("在沥青路上行驶");
    }
}
package Tutorial09v2;

public abstract class Vehicle {
    protected Road road;

    protected Vehicle(Road road) {
        this.road = road;
    }

    public abstract void drive();
}

class Car extends Vehicle {
    public Car(Road road) {
        super(road);
    }

    @Override
    public void drive() {
        System.out.print("汽车");
        road.drive();
    }
}

class Bus extends Vehicle {
    public Bus(Road road) {
        super(road);
    }

    @Override
    public void drive() {
        System.out.print("公交车");
        road.drive();
    }
}
package Tutorial09v2;


public class Main {
    public static void main(String[] args) {
        Road cementRoad = new CementRoad();
        Road asphaltRoad = new AsphaltRoad();

        Vehicle carOnCementRoad = new Car(cementRoad);
        Vehicle busOnAsphaltRoad = new Bus(asphaltRoad);

        carOnCementRoad.drive(); // 输出: 汽车在水泥路上行驶
        busOnAsphaltRoad.drive(); // 输出: 公交车在沥青路上行驶
    }
}

 

标签:Tutorial09,软件设计,drive,class,road,Vehicle,public,Road
From: https://www.cnblogs.com/muzhaodi/p/18524454

相关文章

  • 软件设计Tutorial08
      实验8:适配器模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解适配器模式的动机,掌握该模式的结构;2、能够利用适配器模式解决实际问题。 [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:1. 画出对应的类图;......
  • 学习高校课程-软件设计模式-责任链模式和命令模式(lec9)
    原文链接ChainofResponsibility:ProblemExample:anonlineorderingsystem示例:在线订购系统–Therequestmustpassaseriesofchecks–Newrequirements:validation,filteringrepeatedfailedrequests,speedingupbyreturningcachedresults,andmore–......
  • 学习高校课程-软件设计模式-享元模式和代理模式(lec8)
    原文链接Flyweight:ProblemEachparticle,suchasabullet,amissileorapieceofshrapnelwasrepresentedbyaseparateobjectcontainingplentyofdata.Atsomepoint,whenthecarnageonaplayer’sscreenreacheditsclimax,newlycreatedparticlesno......
  • 学习高校课程-软件设计模式-组合模式、装饰器模式和外观模式(lec7)
    原文链接Composite:ProblemUsingtheCompositepatternmakessenseonlywhenthecoremodelofyourappcanberepresentedasatree.仅当应用程序的核心模型可以表示为树时,使用复合模式才有意义。Forexample,imaginethatyouhavetwotypesofobjects:Products......
  • 软件设计--实验七
    实验7:单例模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解单例模式的动机,掌握该模式的结构;2、能够利用单列模式解决实际问题。 [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。 类图:```mermaidclassDiagram......
  • 软件设计--建造者模式
    建造者模式建造者模式是一种创建型设计模式,它允许你创建复杂对象的步骤与表示方式相分离。建造者模式是一种创建型设计模式,它的主要目的是将一个复杂对象的构建过程与其表示相分离,从而可以创建具有不同表示形式的对象。概要意图将一个复杂的构建过程与其表示相分离,使得同样的......
  • 软件设计--抽象工厂模式
    就我的理解来说,抽象工厂模式就是,创建接口和抽象类,把分类逐渐总到一起~使用抽象工厂模式,完成上述产品等级结构:先对性别进行分类:packageTutorial04;publicinterfacePerson{publicStringIs();}packageTutorial04;publicclassManimplementsPerson{@......
  • 软件设计师:软件工程
    文章目录一、开发模型(1)瀑布模型(需求明确)(2)增量模型(快速构建)(3)演化模型(迭代模型)(3.1)原型模型(需求模糊规模小)(3.2)螺旋模型(风险分析规模大)(4)喷泉模型(面向对象)(5)统一过程(UP)模型(6)敏捷开发二、开发过程(1)需求分析(2)概要设计(3)详细设计三、测试(1)系统测试(2)单元测试(3)集成测试(4)测试方法......
  • 【软考中级笔记】软件设计师易混知识点归纳
    一、计算机系统1.1计算机硬件1.2计算机软件1.软件可靠性、可维护性、可用性计算软件可靠性指标公式可靠性:MTTF/(1+MTTF)可用性:MTBF/(1+MTBF)可维护性:1/(1+MTTR)MTTF(MeanTimeToFailure)平均无故障时间MTTF=∑T1/NMTTR(Meantimetorepair)平均修复时间MTTR=∑(T......
  • 2024年软件设计师中级(软考中级)详细笔记【7】面向对象技术(上)(分值10+)
    目录前言第7章面向对象技术(上)7.1面向对象基础(3-4分)7.1.1面向对象的基本概念7.1.2面向对象分析(熟记)7.1.3面向对象设计7.1.4面向对象程序设计7.1.5面向对象测试7.2UML(3~4分)7.2.1事务7.2.2关系7.2.2.1多重度7.2.3UML中的的图结语前言在备考软件设......