2015-12-11 42 views
0

我最近一直在閱讀關於抽象的知識,以及組合和接口。我一直在想的是這個。假設我有一個簡單的類來完成一些工作,並返回double類型的值。如何隱藏用戶的返回數據類型實現

如果我想保護用戶免受更改返回類型的影響,我該如何設計一個類,以便用戶不必擔心我是使用double還是決定使用float,還是更糟糕。在某種程度上,在一個更復雜的情況下,我可能想要改變實施。但是,如果返回類型與我的課程的用戶相關聯,那將是嘗試修改的災難。

回答

0

你應該創建一個變量爲私有,它的價值只能通過這種方法進行修改,例如:

class whatever { 
private double x; 
public void setX(double s) 
{ 
x = d; 
} 
public double getX() 
{ 
return x; 
} 

現在setX的()方法只能改變該變量的方式。

0

我有一個簡單的類來完成一些工作,並返回double類型的值。

我假設你的意思是說,類中有一個函數負責返回值,並且負責內部計算的類中還有其他函數(相對於用戶)。

我該如何設計一個類,以便用戶不必擔心我是使用double還是決定使用float,還是更糟糕。在某種程度上,在一個更復雜的情況下,我可能想要改變實施。但是,如果返回類型與我的課程的用戶相關聯,那將是嘗試修改的災難。

這是一個「向後兼容性」問題。通過向用戶公開你的函數,你基本上籤了一個合同,聲明這個函數將始終返回與之前實現一致的值(直到該產品版本的「生命週期結束」)。內部實現,即用於計算的所有函數都是可變的,前提是這不會改變結果。

您可以隨時添加和公開更多方法。作爲一個抽象的例子,假設你公開了一個返回int的函數,因爲這可以精確地計算出來。用戶應該始終能夠使用它 - 如果你改變它將會破壞他們的所有代碼。現在你找到了一種浮點精度的方法,所以你增加了一個函數,該函數返回到上一個函數返回float。用戶將(希望)現在可以適應這種變化,並且當你能夠刪除功能(由於「生命的終結」)時,所有東西都可以工作。