Как сделать комбинацию условий из некоторых методов

Привет, я искал в 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- изменить данные пользователя (пароль / электронная почта)


Я хочу, чтобы администратор расширил права пользователя, потому что на самом деле он вроде как пользователь. Я хочу создать метод, который будет реализовывать либо для пользователя, либо для администратора, а не делать снова всю общую реализацию в админке ...

Не могли бы вы добавить дополнительные пояснения к тому, чего вы пытаетесь достичь? Также были бы отличными примеры ввода / вывода.

Rcordoval 02.05.2018 02:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
45
1

Ответы 1

Я бы изменил ваш код, чтобы в методе 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, я не хочу снова создавать всю реализацию в админке ...

lingar 02.05.2018 13:26

Если AdminUI расширяет UserUI, тогда вы можете вызвать super.manageOptions в AdminUI::manageOptions.

Scary Wombat 07.05.2018 01:45

Другие вопросы по теме