В настоящее время у меня есть сценарий, в котором человек (например, Джон или Сэм) может добавить фильм (например, «Бойцовский клуб»). в свой список фильмов. Я хочу, чтобы каждый человек мог выбрать разные дополнения для одного и того же фильма. Однако когда я добавляю к фильму дополнительный контент (например, «Попкорн»), он добавляется для всех людей, которые смотрят этот фильм, а не только для отдельного человека.
Вот пример:
Джон хочет посмотреть «Бойцовский клуб» и добавить дополнительный «Попкорн».
Сэм хочет посмотреть тот же фильм, но предпочитает дополнительный «Выпивку».
Проблема в том, что когда я добавляю «Попкорн», в фильм, он добавляется в фильм как для Джона, так и для Сэма, а не только для Джона.
Вот мой код:
Человек:
Код: Выделить всё
public class Person {
private String name;
private int attendeesCount;
private List movies;
public Person(String name, int attendeesCount) {
this.name = name;
this.attendeesCount = attendeesCount;
this.movies = new ArrayList();
}
public void addMovie(Movie movie) {
movies.add(movie);
}
}
Код: Выделить всё
public class Movie {
private String title, description;
private int price, duration;
private List extras = new ArrayList();
private Movie(String title, int price, String description, int duration) {
this.title = title;
this.price = price;
this.description = description;
this.duration = duration;
}
public void addExtra(Extra extra) {
this.extras.add(extra);
}
}
Код: Выделить всё
public class Extra {
private String name;
private int price;
public Extra(String name, int price) {
this.name = name;
this.price= price;
}
}
Код: Выделить всё
public class TestTheatre {
public static void main(String[] args) {
Movie fightClub = new Movie("Fight Club", 1000, null, 90);
Movie theMatrix = new Movie("The Matrix", 2000, null, 80);
Extra popcorn = new Extra("Popcorn", 500);
Extra drink = new Extra("Drink", 400);
fightClub.addExtra(popcorn); // Here is where I am adding the extra to the movie
Person john = new Person("John", 2);
Person sam = new Person("Sam", 3);
john.addMovie(fightClub);
john.addMovie(theMatrix);
sam.addMovie(fightClub);
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... ct-in-java
Мобильная версия