Привет, я искал в Google эту проблему, но не нашел ничего полезного. У меня есть один объект userUI, представляющий пользовательский интерфейс обычной пользовательской области. И у меня есть объект AdminUI, который расширяет его, и я хочу добавить параметр администратора к этому классу наиболее правильным способом без необходимости управлять общими параметрами этого класса.
Пытаюсь сделать это (сделайте это как пример для удобства ....
Это правильный путь или есть более эффективный и простой способ.
Ощущение, будто я что-то скучаю ...
Это мой код:
package main.java.draft;
import java.util.Scanner;
//Stackoverflow question
public class SOQ {
public static void main(String[] args) {
//How to do combination of some conditions.
//Trying on user.
UserUI userUI = new UserUI();
System.out.println("If User regualr just 1-7, if admin 8-12 too");
Scanner sc = new Scanner (System.in);
int input = sc.nextInt();
userUI.manageOptions(input);
//trying to do that on admin
System.out.println("If User regualr just 1-7, if admin 8-12 too");
AdminUI adminUI = new AdminUI();
input = sc.nextInt();
adminUI.manageOptions(input);
sc.close();
}
}
class UserUI{
boolean admin = false;
public void manageOptions(int input){
if (input > 0 && input < 8){
userMethods(input);
}
else if ((input > 7 && input < 13) && admin){
AdminUI adminUI = new AdminUI();
adminUI.manageAdminOptions(input);
}
else{
System.out.println("Not proper option");
}
}
public void userMethods(int input){
System.out.println("User Methods - method " + input);
}
}
class AdminUI extends UserUI{
public AdminUI(){
admin = true;
}
public void manageAdminOptions(int input){
adminMethods(input);
}
public void adminMethods(int input){
System.out.println("Admin Methods - method " + input);
}
}
**
**
Это экран вывода - пользователя: Пожалуйста, выберите один из следующих вариантов:
1- Изменить сообщения. 2- сменить пароль. 3- Изменить адрес электронной почты. 4- Покажи мои данные. (с паролем? - да) 5- выйти из системы. 6- показать сообщения. 7- Удалить учетную запись (с паролем).
Это вывод администратора:
Пожалуйста, выберите один из следующих вариантов:
1- Изменить сообщения. 2- сменить пароль. 3- Изменить адрес электронной почты. 4- Покажи мои данные. (с паролем? - да) 5- выйти из системы. 6- показать сообщения. 7- Удалить учетную запись (с паролем). 7 - показать конкретного пользователя по имени 8 - показать всех пользователей 9- удалить одного пользователя. 10 - удалить всех пользователей! 11- изменить данные пользователя (пароль / электронная почта)
Я хочу, чтобы администратор расширил права пользователя, потому что на самом деле он вроде как пользователь. Я хочу создать метод, который будет реализовывать либо для пользователя, либо для администратора, а не делать снова всю общую реализацию в админке ...
Я бы изменил ваш код, чтобы в методе main
вы создавали либо User
, либо Admin
на основе ввода. Затем вы можете избавиться от странной логики в подклассах, если оба подкласса реализуют интерфейс.
UserBase user = null; // the interface
System.out.println("If User regular just 1-7, if admin 8-12 too");
Scanner sc = new Scanner (System.in);
int input = sc.nextInt();
if (input <= 7)
{
user = new UserUI();
}
else {
user = new AdminUI ();
}
// then call common method
user.manageOptions(); // parameter are maybe not required ?
Подклассы будут похожи на
//UserUI
public void manageOptions () { System.out.println("User Methods - method "); }
//AdminUI
public void manageOptions () { System.out.println("Admin Methods - method "); }
Я не хочу создавать новую логику в админке, я хочу, чтобы она добавляла больше логики пользователю. Если у пользователя будет 10 вариантов и их реализаций, а у администратора еще 5, я не хочу снова создавать всю реализацию в админке ...
Если AdminUI
расширяет UserUI
, тогда вы можете вызвать super.manageOptions
в AdminUI::manageOptions
.
Не могли бы вы добавить дополнительные пояснения к тому, чего вы пытаетесь достичь? Также были бы отличными примеры ввода / вывода.