使用JPA / Hibernate的装饰器设计模式

时间:2020-05-24 21:29:32

标签: java spring hibernate spring-boot jpa

首先,我想说我具有Hibernate和Spring引导的基本经验,但是对于我拥有的项目,我决定使用它们来更好地学习它们。

我目前遇到的问题是,我不知道如何使用JPA /休眠方式在我的应用程序中表示Decorator设计模式,以便将它们保存在同一张表中...我将代码保留在下面。

这个想法是拥有一辆带有某些信息的公共汽车,但是它可以有一条路线和一个驾驶员,但是必须为它们分配装饰设计模式。

提前感谢您的回答!

IBus.java

package com.softeng.finalsofteng.model.decorator;

public interface IBus {

    String getTodo();

    void setTodo(String placa, int capacidad, String marca);
}

Bus.java

package com.softeng.finalsofteng.model.decorator;

public class Bus implements IBus {

    private String placa;
    private int capacidad;
    private String marca;

    public Bus(String placa, int capacidad, String marca) {
        this.placa = placa;
        this.capacidad = capacidad;
        this.marca = marca;
    }

    public String getPlaca() {
        return placa;
    }

    public void setPlaca(String placa) {
        this.placa = placa;
    }

    public int getCapacidad() {
        return capacidad;
    }

    public void setCapacidad(int capacidad) {
        this.capacidad = capacidad;
    }

    public String getMarca() {
        return marca;
    }

    public void setMarca(String marca) {
        this.marca = marca;
    }

    @Override
    public String getTodo() {
        return "Placa: " + placa + ",Capacidad: " + capacidad + ",Marca: " + marca;
    }

    @Override
    public void setTodo(String placa, int capacidad, String marca) {
        this.placa = placa;
        this.capacidad = capacidad;
        this.marca = marca;
    }
}

BusInfo.java

package com.softeng.finalsofteng.model.decorator;

abstract class BusInfo implements IBus {

    protected IBus busInfo;

    public BusInfo(IBus busInfo) {
        this.busInfo = busInfo;
    }


    @Override
    public String getTodo() {
        return busInfo.getTodo();
    }

    @Override
    public void setTodo(String placa, int capacidad, String marca) {
        busInfo.setTodo(placa, capacidad, marca);
    }
}

BusConductor.java

package com.softeng.finalsofteng.model.decorator;

public class BusConductor extends BusInfo {

    private String conductor;
    private String[] parametros;

    public BusConductor(IBus busInfo, String conductor) {
        super(busInfo);
        this.conductor = conductor;
    }

    @Override
    public String getTodo() {
        return busInfo.getTodo() + addConductor(this.conductor);
    }

    @Override
    public void setTodo(String placa, int capacidad, String marca) {
        busInfo.setTodo(placa, capacidad, marca);
    }

    public String addConductor(String conductor){
        return ",Conductor: " + conductor;
    }
}

BusRuta.java

package com.softeng.finalsofteng.model.decorator;

public class BusRuta extends BusInfo {

    private String ruta;

    public BusRuta(IBus busInfo, String ruta) {
        super(busInfo);
        this.ruta = ruta;
    }

    @Override
    public String getTodo() {
        return busInfo.getTodo() + addRuta(this.ruta);
    }

    @Override
    public void setTodo(String placa, int capacidad, String marca) {
        busInfo.setTodo(placa, capacidad, marca);
    }

    public String addRuta(String ruta){
        return ",Ruta: " + ruta;
    }
}

0 个答案:

没有答案