首页 文章

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

提问于
浏览
0

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

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");

m.allAccess 对象的引用?

1 回答

  • 0

    是否可以使用而不是这条线,因为它们具有相同的参考?

    不, m.setValue("Andrew"); 不起作用,因为 Manager -class没有函数 setValue

    m.allAccess是对象的引用吗?

    是的, allAccess 引用此行中设置的 Account -object: m.allAccess = a;

    getValuesetValue 方法应该真正命名为 getNamesetName ,因为它们的作用就是这样 . setValue 应返回一个值,例如帐户的余额 .

    如果你有一个setter, name 也不是只读的 .

相关问题