我最近一直在阅读有关抽象的内容,以及组合和界面。我一直在想的是这个。假设我有一个简单的类可以完成某些工作并返回double类型的值。
如果我想保护用户免受返回类型的更改,我如何设计一个类,以便用户不必担心我是否使用了double,或者决定使用float,或者更糟。在某些情况下,在更复杂的情况下,我可能希望进行实施更改。但是,如果返回类型耦合到我的类的用户,那将是一个试图修改的灾难。
答案 0 :(得分:0)
您应该将该变量创建为私有,并且只能通过该方法修改其值,例如:
class whatever {
private double x;
public void setX(double s)
{
x = d;
}
public double getX()
{
return x;
}
现在setX()方法只是改变那个变量的方法。
答案 1 :(得分:0)
我有一个简单的类可以完成一些工作并返回double类型的值。
我假设你的意思是类中有一个函数负责返回值,并且类中还有其他函数负责内部计算(对于用户而言)。
我如何设计一个类,以便用户不必担心我是否使用了double,或者决定使用float,或者更糟。在某些情况下,在更复杂的情况下,我可能希望进行实施更改。但是,如果返回类型耦合到我的类的用户,那将是一个试图修改的灾难。
这是一个“向后兼容”问题。通过向用户公开您的函数,您基本上签署了一份合同,声明此函数将始终返回与其先前实现一致的值(直到该产品版本的“生命周期结束”)。内部实现,即用于计算的所有函数都是可变的,只要这不会改变结果。
您始终可以添加和公开更多方法。作为一个抽象示例,假设您公开了一个返回int
的函数,因为这是您可以计算的准确度。用户应始终能够使用它 - 如果您更改它将破坏所有代码。现在,您找到了一种具有浮点精度的方法,因此您添加了一个函数,该函数将float
另外返回到前一个。用户(希望)现在可以适应这种变化,当你能够删除int
功能时(由于“生命结束”),一切都会有效。