我下课了。
public class SomeClass {
private String name;
private String id;
private String access;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAccess() {
return access;
}
public void setAccess(String access) {
this.access = access;
}
public void doSomeFunctionality(){
//does some logic using name and id
}
}
现在,我仅向客户公开上述类的几种方法。我可以做如下。
public class SomeOtherClass {
private SomeClass someClass = new SomeClass();
public void setName(String name) {
someClass.setName(name);
}
public void setId(String id) {
this.setId(id);
}
}
通过上述操作,我可以限制客户端无法访问的一种方法,而仅公开所需的方法。现在,客户端实例化SomeClass并将数据填充到SomeOtherClass.java的someClass属性中。
但是现在我如何从SomeOtherClass.java获取填充的数据?
public SomeClass getSomeClass() {
return someClass;
}
如果我提供getter方法来像上述那样在SomeOtherClass.java中获取SomeClass,那么即使客户端也可以访问它,而我不想这样做。
但是,如果我可以直接填充someClass实例,那么我可以简单地调用doSomeFunctionality()
同一实例。像getSomeClass().doSomeFunctionality();
我如何克服上述情况?
谢谢!
您的问题似乎很困惑,但是我认为这是您正在寻找的答案,
让客户获取信息的方法应与让他们设置信息的方法完全相同。您不应该提供对内部SomeClass的访问权限-这会破坏整个观点。因此,如果您只想提供对name属性的读写访问,则外部类应如下所示:
public class SomeOtherClass {
private SomeClass someClass = new SomeClass();
public void setName(String name) {
someClass.setName(name);
}
public String getName() {
return someClass.getName();
}
}
您不必将其属性设置为可以设置的属性。例如,您也可以允许他们“获取” ID,但不进行设置。如果希望他们可以访问所有属性,请为SomeOtherClass中的所有属性提供吸气剂。如果是这种情况,您可能要考虑创建一个接口,该接口指定所有getter方法,并由SomeClass和SomeOtherClass实施,两个类也都实现它们所需的setter方法。
如果您始终希望提供完全的“读取”访问权限,但又希望提供受限的“写入”访问权限,则可以使用其他体系结构方法,如果您愿意的话,我们可以进行探讨。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句