【发布时间】:2016-08-31 10:19:55
【问题描述】:
我有一个对象,我想限制对其某些方法的访问,以便只有对象的创建者可以访问它们:
class RestrictedObject {
private final UUID id;
public RestrictedObject(UUID id) {
this.id = id;
}
public boolean restrictedMethod(UUID anId) {
if (anId.equals(this.id)) {
//do stuff
return true;
} else {
return false;
}
}
}
对象的创建者会这样做:
UUID id = UUID.randomUUID();
RestrictedObject o = new RestrictedObject(id);
o.restrictedMethod(id);
这是一个好的做法还是一个糟糕的主意?
【问题讨论】:
-
一个(可能更好的)替代方案是只共享对象的不可变视图。例如,创建者会执行
obj = new RestrictedObject(),然后,当共享受限对象时,它会执行return new NonModifiableRestrictedObject(obj);,而NonModifiableRestrictedObject是一个不允许除受限方法之外的所有方法的包装器。
标签: java uuid access-modifiers