@vitsen777

Как реализовать систему ролей на Java?

У меня есть класс Reader - это обычный читатель в книжном, но также в моей "системе" должен быть премиум читатель. Как мне этого читателя реализовать правильно? Как читателя превращать в премиум и наоборот? И у каждого есть свои доп методы, которых нет у другого. Надеюсь понятно написал.
Вот код:
public class Reader {
    private String name;
    private String number;
    private int countBooks;
    private int readerTicket;

    private List<Book> book = new LinkedList<>();

    public Reader(String name, String number, int readerTicket) {
        this.name = name;
        this.number = number;
        this.readerTicket = readerTicket;
    }

    public Reader(Reader a) {
        name = a.name;
        book = a.book;
        countBooks = a.countBooks;
    }

    public void takeBook(Book nameBook) {
        for (Book b : book) {
            if (nameBook.equals(b)) {
                System.out.println("Такая книга уже есть");
                return;
            }
        }
        System.out.println("Читатель: " + name + " взял книгу: " + nameBook.getName());
        book.add(nameBook);
        countBooks++;
    }

    public void takeBook(Book[] nameBook) {
        StringBuilder builder = new StringBuilder();

        for (int i = 0; i < nameBook.length; i++) {
            countBooks++;
            book.add(nameBook[i]);
            if (i == nameBook.length - 1) {
                builder.append(nameBook[i].getName());
                break;
            }
            builder.append(nameBook[i].getName()).append(", ");
        }
        System.out.println("Читатель: " + name + " взял книги: " + builder);
    }

    public void cBooks() {
        System.out.println("Пользователь: " + name + " Взял вот столько книг: " + countBooks);
    }

    public String getName() {
        return name;
    }

    public List<Book> getBook() {
        return book;
    }

    protected int getCountBooks() {
        return countBooks;
    }
}


public class Reader {
    private String name;
    private String number;
    private int countBooks;
    private int readerTicket;

    private List<Book> book = new LinkedList<>();

    public Reader(String name, String number, int readerTicket) {
        this.name = name;
        this.number = number;
        this.readerTicket = readerTicket;
    }

    public Reader(Reader a) {
        name = a.name;
        book = a.book;
        countBooks = a.countBooks;
    }

    public void takeBook(Book nameBook) {
        for (Book b : book) {
            if (nameBook.equals(b)) {
                System.out.println("Такая книга уже есть");
                return;
            }
        }
        System.out.println("Читатель: " + name + " взял книгу: " + nameBook.getName());
        book.add(nameBook);
        countBooks++;
    }

    public void takeBook(Book[] nameBook) {
        StringBuilder builder = new StringBuilder();

        for (int i = 0; i < nameBook.length; i++) {
            countBooks++;
            book.add(nameBook[i]);
            if (i == nameBook.length - 1) {
                builder.append(nameBook[i].getName());
                break;
            }
            builder.append(nameBook[i].getName()).append(", ");
        }
        System.out.println("Читатель: " + name + " взял книги: " + builder);
    }

    public void cBooks() {
        System.out.println("Пользователь: " + name + " Взял вот столько книг: " + countBooks);
    }

    public String getName() {
        return name;
    }

    public List<Book> getBook() {
        return book;
    }

    protected int getCountBooks() {
        return countBooks;
    }
}


public class Reader {
    private String name;
    private String number;
    private int countBooks;
    private int readerTicket;

    private List<Book> book = new LinkedList<>();

    public Reader(String name, String number, int readerTicket) {
        this.name = name;
        this.number = number;
        this.readerTicket = readerTicket;
    }

    public Reader(Reader a) {
        name = a.name;
        book = a.book;
        countBooks = a.countBooks;
    }

    public void takeBook(Book nameBook) {
        for (Book b : book) {
            if (nameBook.equals(b)) {
                System.out.println("Такая книга уже есть");
                return;
            }
        }
        System.out.println("Читатель: " + name + " взял книгу: " + nameBook.getName());
        book.add(nameBook);
        countBooks++;
    }

    public void takeBook(Book[] nameBook) {
        StringBuilder builder = new StringBuilder();

        for (int i = 0; i < nameBook.length; i++) {
            countBooks++;
            book.add(nameBook[i]);
            if (i == nameBook.length - 1) {
                builder.append(nameBook[i].getName());
                break;
            }
            builder.append(nameBook[i].getName()).append(", ");
        }
        System.out.println("Читатель: " + name + " взял книги: " + builder);
    }

    public void cBooks() {
        System.out.println("Пользователь: " + name + " Взял вот столько книг: " + countBooks);
    }

    public String getName() {
        return name;
    }

    public List<Book> getBook() {
        return book;
    }

    protected int getCountBooks() {
        return countBooks;
    }
}
  • Вопрос задан
  • 195 просмотров
Пригласить эксперта
Ответы на вопрос 1
Maksclub
@Maksclub
maksfedorov.ru
Сделайте отдельную сущность типа Subscribe, или Order и свяхите со своей ролью по id,
тогда будет ясно — есть ли заказ (и его подходящий статус) или нет

Тогда у вас будут все читатели, но у некоторых активная подписка/заказ
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы