只读接口模式的Java代码示例

时间:2018-12-08 22:04:59

标签: java

为Java中的只读接口模式考虑以下代码:

new Object()
package package2;

public interface AccountsReadOnly {
    public String getValue();
}
package package1;

import package2.AccountsReadOnly;

class Accounts implements AccountsReadOnly {
    private String name;

    public Accounts() {
        name = "unknown";
    }

    public String getValue() {
        return name;
    }

    public void setValue(String name) {
        this.name = name;
    }
}
package package1;

public class Manager {
    Accounts allAccess;
    public Manager() {}
}

我无法理解此行,因为这是我第一次看到此格式:

package package2;

public class Employee {
    public AccountsReadOnly accountReadOnly;
    public Employee() {}
}

public class Demo {
    public static void main(String[] args) {
        Manager m = new Manager();
        Employee e = new Employee();
        Accounts a = new Accounts();
        m.allAccess = a;
        m.allAccess.setValue("Andrew");
        System.out.println(m.allAccess.getValue());
        e.accountReadOnly = a;
        System.out.println(e.accountReadOnly.getValue());
    }
}

因为它们具有相同的引用,是否可以代替此行使用?

m.allAccess.setValue("Andrew");

m.setValue("Andrew"); 是对象的引用吗?

1 个答案:

答案 0 :(得分:0)

  

因为它们具有相同的引用,是否可以代替此行?

否,m.setValue("Andrew");不起作用,因为Manager类没有功能setValue

  

m.allAccess是对象的引用吗?

是的,allAccess引用在以下行中设置的Account对象:m.allAccess = a;

实际上应该将getValuesetValue方法分别命名为getNamesetName,因为它们的作用。 setValue应该返回一个值,例如帐户余额。

如果您有设置器,name也不是只读的。