2012-02-28 134 views
1

我要實現與支付系統工作類(姑且稱之爲PaymentSystem)API,允許下列操作:我應該使用哪種設計模式? (支付系統API)

  • 開具發票給用戶
  • 檢查發票
  • 獲取用戶平衡
  • 檢查收款方存在

我現在所得到的是:

抽象類PaymentSystemBase,所有的設置都保持(安全令牌,密碼,RESTful API中的URL等)

每個API入口類:

  • PaymentSystemIssueInvoice
  • PaymentSystemCheckInvoice
  • PaymentSystemGetBalance
  • PaymentSystemCheckUser

每個此類都從PaymentSystemAPI繼承與方法(從PaymentSystemBase繼承,當然):

  • request -
  • parseResponse解析從API響應(主要是告訴請求是否成功,或者執行通過HTTP請求我們已經得到了一個錯誤)

所以我的問題是:這將是方便使用一些創作設計模式,爲的API(IssueInvoiceCheckInvoiceGetBalanceCheckUser)?

如果你對我有什麼建議,我應該以另一種方式實現API,請隨時回答/評論問題。

謝謝。

+0

聽起來你已經實現了[command pattern](http://en.wikipedia.org/wiki/Command_pattern)? – Irfy 2012-02-28 01:47:44

+0

是的,但它是一種行爲模式。我期待封裝這些類不要直接使用它們,而是通過通用接口,像這樣(我在想它):'PaymentSystem.apiCall.getBalance(params)'(僞代碼)。 apiCall做的是:用'params'創建PaymentSystemGetBalance實例,然後調用'request'並返回'PaymentSystemGetBalance'的實例(類似'factory'和'builder'的混合) – Nemoden 2012-02-28 02:58:50

+0

,重點是:如果我添加另一個API ,比方說'PaymentSystemDeclineIvoice',我仍然會通過這個通用接口('PaymentSystem.apiCall.DeclineInvoice(params)')使用它,這對我來說似乎很方便。雖然我不是設計模式方面的專家,但如果採取這種方式,我不會意識到任何缺點。一種臃腫的問題 - 我意識到:) – Nemoden 2012-02-28 03:01:41

回答

1

這可能類似於command(由Irfy註釋)。

如果您具有複雜的邏輯來確定要使用的基類的哪個子類(即比使用幾個構造函數參數更合理),那麼您可以使用factory模式。

我也會在那裏扔strategy,但我們可能會偏離軌道。

作爲設計模式的一般注意事項,您應該將它們用於目的。通常模式用於:

  1. 增加代碼可讀性
  2. 增加代碼重用。
  3. 分開可能會改變什麼不會改變。

特別是,如果您選擇的子類可能會在將來發生變化,那麼最好抽象出決定使用哪個子碼的代碼。工廠模式通過將這個邏輯封裝在一個類中來實現這一點。

我覺得很奇怪,你正在使用一些類來表示看起來像方法的東西。但是,這聽起來像你正在處理另一個API,所以我需要更多的信息來進一步提供建議。

+0

謝謝你的回答 - 我很感激。請看看我對@lrfy的回覆。 「聽起來你正在使用另一個API」。 YEP。 '所以我需要更多的信息來進一步建議'。那麼,文件是用俄語寫的,不幸的是:)這個方案的工作原理是這樣的:我們向收款人發出發票,然後他登錄系統,付款並返回我們的網站,我們也可以檢查發票的狀態和檢查收款人的存在。在他付款/拒絕後,商家(支付系統)通知我們(HTTP調用我們的網站)。這是非常多的,我不知道我可以在這裏提供什麼信息。 – Nemoden 2012-02-28 03:09:12

+0

嘿,謝謝你的回覆。我可能不得不把這一個給編碼神。除非我能看到一些代碼或UML或其他東西,否則我不會有信心提出建議。很明顯,你熟悉基本的設計模式,所以你的情況可能是獨一無二的。 – 2012-02-28 05:20:09

+0

更不用說我不知道​​你在用什麼語言= P – 2012-02-28 05:21:08

相關問題