Моделирование событий и бронирование в классе JAVA - лучший дизайн - PullRequest
0 голосов
/ 02 марта 2019

Я довольно новичок в 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;

Теперь, чтобы получить все резервирования на основе идентификатора пользователя, у меня есть метод вмой класс DOA, который получает мне все бронирования на основе поля ID пользователя.тем не менее, как я могу также получить всю информацию о туре, для которого предназначено бронирование?

Должен ли я создать другое поле в модели резервирования, используя тип TourModel?Разве это не противоречит отношениям "ИМЕЕТ" (технически у резервации нет тура. Это наоборот.

Может быть, я слишком обдумываю это, но я хотел попросить разъяснений, посколькуЯ не знаком с шаблонами объектно-ориентированного проектирования.

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;            
}

1 Ответ

0 голосов
/ 03 марта 2019

Сначала создайте интерфейс:

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

Затем в классе реализации сначала получите детали бронирования на основе идентификатора пользователя, а затем вы можете передать этот список бронирования, чтобы получить детали тура.

  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;
    }
}
...