2012-05-01 87 views
1

我想知道,應該放置哪些通用(或util函數)?我應該在哪裏放置util函數 - OOP最佳實踐

例如:剛開paymentList

public class Credit { 
    private Integer _duration;    
    private Double _interestRate;   
    private Integer _creditSum;  
    private PaymentStream _paymentStream; 
    private Date _openDate;   
} 

PaymentStream impements策略模式。

問題: 我有construnctor(duration,interestRate,creditSum,paymentStream,openDate)。但我也希望跟隨着功能:

  • getCreditDuration(creditSum,monthlyPayments,的InterestRate)
  • getCreditSum(montlyPayment,的InterestRate,持續時間)

顯然,他們不能上信用實例,因爲我沒有足夠的信息給構造函數。那麼他們應該放在哪裏?

添加:我還需要將所有計算(getCreditDuration等)存儲到數據庫中。所以,如果這是返回double(int)的靜態函數,我無法將它們存儲到數據庫中。我應該保存什麼對象?

要求是:用戶可以選擇持續時間計算和信用額度計算(等)。有單獨的計算視圖。每次用戶點擊「計算按鈕」計算結果都必須保存到DB中。用戶可以看到所有的計算,他可以點擊任何項目。

對於離(с裝置值的計算):

Sum  Duration Interest Payment 
10000 2 yrs 12%  1000(с) -> opens view to calculate monthly payment 
12000(с) 3 yrs 10%  1200  -> opens view to calculate credit sum 
+0

你的意思是說,每當有人執行這種計算,每一次,沒有特殊情況下,一個記錄必須寫入數據庫?似乎很奇怪的要求。我的直覺是持久性(例如出於審計目的)屬於一個獨立的類,它調用了這些靜態方法。請詳細解釋您的需求,也許我們可以找到更好的答案 – djna

+0

傳遞一個對象進行協作,從而提供您需要的功能。 –

回答

2

它們是無狀態的方法,其邏輯清楚地綁信用對象的概念(關於他們工作的所有數據作爲參數被傳遞)。所以有一種可能性就是讓它們成爲Credit類的靜態方法。

+0

你可以讓它們成爲非成員函數,把它們放在cpp文件的匿名命名空間中,而不是混淆類聲明。 –

相關問題