我有一个对象,它具有一堆公共属性,但没有getter和setter。这很糟糕!因此,我创建了一个类,为其属性创建了getter和setter。我的计划是在我的类中包装该对象,这意味着不能直接访问属性。 我不太确定如何做到这一点。我很好地理解了强制转换。 我应该如何使用我的安全类包装该类,并通过我的getter和setter访问属性?
我有一个对象,它具有一堆公共属性,但没有getter和setter。这很糟糕!因此,我创建了一个类,为其属性创建了getter和setter。我的计划是在我的类中包装该对象,这意味着不能直接访问属性。 我不太确定如何做到这一点。我很好地理解了强制转换。 我应该如何使用我的安全类包装该类,并通过我的getter和setter访问属性?
class MyCar implements ICar{
private final Car car;
public MyCar(Car car)
{
this.car = car;
}
public string getModel()
{
return car.model;
}
public void setModel(string value)
{
car.model = value;
}
}
现在,不再需要传递一个 Car
实例,你可以传递一个具有 getters 和 setters 的 MyCar
实例或者一个对 ICar
的引用,这将让你完全控制你想要暴露的内容(例如,你可以只暴露 getters)。
public class ExposedProtector {
private Exposed exposed; // private means it can't be accessed directly from its container
//public/protected methods here to proxy the access to the exposed.
}
请注意,其他人可以创建Exposed的实例。如果可能的话,您需要修改Exposed类本身,这可能是更好的方法。
您应该查看Java访问修饰符。有不同级别的访问控制,从private到protected到public。
public class BetterThing {
private Thing thing;
public BetterThing(Thing thing) {
this.thing = thing;
}
public int getIntProperty1() {
return thing.property1;
}
public void setIntProperty1(int value) {
thing.property1 = value;
}
// etc.
}