java - 安全使用元素

标签 java oop

我想编写一些代码,可以在一个对象内的两种模式之间切换。

  • 读取模式:userMode
  • 读+写模式:adminMode
  • userMode 应该只能读取我的 getter 方法。
  • adminMode 应该能够调用 setter 和 getter 方法。

一些附加信息:

  • 对象以只读模式提供
  • 解锁操作应切换到读+写模式。
<小时/>

重要

编译器应在编译时检查对象的正确使用(取决于模式),即不是通过检查标志来检查。

<小时/>

我已经非常努力地尝试了,但是如果没有任务中的 boolean 标志,我无法实现我的项目,所以请告诉我如何...

这是我不满意的女巫代码:

public class Person {
    private String name;
    private double salary;
    private boolean isAdmin;
    /*
     * ...
     */

    public Person(String name, double salary, boolean isAdmin) {
        this.name = name;
        this.salary = salary;
        this.isAdmin = isAdmin;

    }

    public double getSalary() {
        return this.salary;
    }

    public void setSalary(double salary) {
        if (isAdmin) {
            this.salary = salary;
        }

    }

    public void enableAdminMode() {
        isAdmin = true;
    }

    public void disableAdminMode() {
        isAdmin = false;
    }
}

最佳答案

创建一个不带setter的ReadOnlyPersonPerson扩展了ReadOnlyPerson。 然后通过 instanceof 检查该对象是否可写。

关于java - 安全使用元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45623572/

相关文章:

file - 在同一个文件中包含多个类是一种不好的做法吗?

python - Python中如何从当前对象的方法中调用另一个对象的方法

java - 特定行上的 Recyclerview 按钮 - 如何在 onclicklistener 之前捕获行 id?

java - Action 和名称

java - JTree 单元格编辑器接收鼠标点击的方式因操作系统而异

design-patterns - 面向对象/模式 : Customizing layout based on environment

java - 当实现类是强制性的并绑定(bind)到接口(interface)契约时,如何使用 Java 中的接口(interface)实现松散耦合?

java - 无法使用Windows Server静态IP访问Java Web应用程序

Java 按钮按下视觉风格

c# - Object() 和 Object{} 的区别