java - 如何从一些方法中组合条件
问题描述
嗨,我已经用谷歌搜索过这个问题,但没有找到有用的东西。我有一个代表常规用户区域 UI 的 userUI 对象。我有扩展它的 AdminUI 对象,我想以最正确的方式将 admin 选项添加到该类,而无需对其共享选项进行管理。
试图做到这一点(为了方便起见,像例子一样做......
这是正确的方法还是有更有效和简单的方法。
感觉好像错过了什么……
这是我的代码:
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-更改用户详细信息(密码/电子邮件)
我希望管理员会扩展用户,因为实际上他是一种用户。我想制作为 user 或 admin 实现实现的方法,而不是再次在 admin 中实现所有共享实现......
解决方案
我会更改您的代码,以便在该main
方法中您可以根据输入创建 anUser
或 an 。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 "); }
推荐阅读
- laravel - Lumen 首次 api 请求调用耗时太长
- python - vscode从python脚本中获取当前文件的路径
- c# - 安排一个方法,然后......等待(使用计时器和线程)
- json - 在查询 JSON 输出 SQL 中添加 UNION ALL 时 JSON 格式不正确
- amazon-web-services - AWS 负载均衡器基于路径的路由
- angular - +this.activatedRoute.snapshot.paramMap.get('id') 显示错误
- javascript - 收到此错误 - 未捕获的类型错误:无法读取未定义的属性“getContext”
- pagespeed - PageSpeed Insights API 在看似随机的时间返回 401 错误
- reactjs - 如何在我的 React 应用程序中配置 css 模块
- html - 将元素的中心点绝对定位在其父宽度的精确百分比