首页 > 解决方案 > 在 JAVA 类中建模事件和预订 - 最佳设计方法

问题描述

我对java很陌生,正在构建一个基本的旅游预订系统。我有一个看起来像这样的旅游班。

public class TourModel {        
    private int tourID;
    private String tourname;
    private String tourlocation;
    private String country;
    private String groupsize;
    private String tourprice;
    private String tourduration;
    private String tourdescription;
    private int availableSeats;
    private Date tourDate;
    private String tourBanner;
    private ArrayList<ReservationModel> reservations;

预订舱看起来像

import java.util.ArrayList;
import java.util.Date;

public class ReservationModel {

    private int reservationID;
    private int tourID;
    private int userID;
    private String reservationstatus;
    private int reservationpaymentstatus;
    private int numberofattendees;
    private Date reservationcreationdate;
    private ReservationAttendees attendees;

现在,为了根据用户 ID 获取所有预订,我在 DOA 类中有一个方法,可以根据用户 ID 字段获取所有预订。但是,我怎样才能获得预订的所有旅游信息?

我应该使用 TourModel 类型在预订模型中创建另一个字段吗?这不会违反“HAS A”关系吗(从技术上讲,预订没有旅行。相反。

也许我想太多了。但我想要求澄清,因为我不熟悉面向对象的设计模式。

public ArrayList<ReservationModel> getReservationByTourID(int tourID) {
    ArrayList<ReservationModel> reservations = new ArrayList<ReservationModel>();
    try {
        Class.forName("com.mysql.cj.jdbc.Driver");

        Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/ArtofTravel", "root",
                "2001Space");

        String query = "select * from reservations where tour_ID = ?;";
        PreparedStatement stmt = con.prepareStatement(query);
        stmt.setInt(1, tourID);

        ResultSet rs = stmt.executeQuery();

        while (rs.next()) {

            reservations.add(new ReservationModel(rs.getInt("ID"), rs.getInt("tour_ID"),rs.getInt("user_ID"),rs.getString("reservation_Status"),rs.getInt("reservation_payment_status"),rs.getInt("number_of_attendees"), rs.getDate("reservation_create_date")));

        } 
            stmt.close();
            rs.close();
            con.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return reservations;            
}

标签: javaoopdesign-patternsweb-applicationsjavabeans

解决方案


首先创建一个接口:

   public interface Tour {
    public ArrayList<ReservationModel> getReservations(String userId);
    public ArrayList<TourModel> getTourDetails(ArrayList<ReservationModel> 
      reservationList);
   }

然后在实现类中首先根据用户 id 获取预订详细信息,然后您可以通过此预订列表来获取旅游详细信息。

  public class TourImpl implements Tour{
  private ArrayList<ReservationModel> reservationModelList = new 
  ArrayList<ReservationModel>();
  private ArrayList<TourModel> tourModelList = new ArrayList<TourModel>();

 @Override
 public ArrayList<ReservationModel> getReservations(String userId) {
    ReservationModel reservationModel = // Your logic to query in Database and 
   create the Model accordingly;
     reservationModelList.add(reservationModel);
     return reservationModelList;
  }

@Override
public ArrayList<TourModel> getTourDetails(ArrayList<ReservationModel> reservationList ) {
    TourModel tourModel = // Your logic to query in Database and create the Model based on reservation id;
            tourModelList.add(tourModel);
             return tourModelList;
   }

}

和模型类来保存数据

  public class ReservationModel {
  private int reservationID;
  private int tourID;
  private int userID;
  private String reservationstatus;
  public ReservationModel(int reservationID, int tourID, int userID, String 
  reservationstatus) {
    this.reservationID = reservationID;
    this.tourID = tourID;
    this.userID = userID;
    this.reservationstatus = reservationstatus;
  }
}


  public class TourModel {
  private int tourId;
  private String tourname;
  private String tourlocation;
  private String country;
  public TourModel(int tourId, String tourname, String tourlocation, String 
  country) {
   this.tourId = tourId;
   this.tourname = tourname;
   this.tourlocation = tourlocation;
   this.country = country;
    }
}

推荐阅读