2012-02-28 17 views
1

私は支払いシステムで動作するクラスを実装する必要が(のはPaymentSystemそれを呼びましょう)、下記の操作を許可するAPI:ユーザー どのデザインパターンを使用しますか? (決済システムAPI)

    • 発行請求書は、請求書
    • をチェック

    • チェック受取人の存在が

    私が今持っていることであるユーザーの残高を取得します。

    • PaymentSystemIssueInvoice
    • PaymentSystemCheckInvoice
    • PaymentSystemGetBalance:すべての設定が残っている(セキュリティ・トークン、パスワード、RESTfulなAPIのURLを、など)各APIエントリの

      クラスです

      抽象クラスPaymentSystemBase

    • PaymentSystemCheckUser
    このクラスのそれぞれは、(もちろんPaymentSystemBaseから継承された)方法でPaymentSystemAPIから継承され

    • request - APIからの応答(基本的に要求が成功したかどうか指示を解析する
    • parseResponse HTTPを介して要求を行います、APIの一部の作成・デザイン・パターン(IssueInvoiceCheckInvoiceを使用すると便利だろう:私たちは、私の質問がある

    )エラーを持っています、CheckUser)?

    別の方法でAPIを実装する方法を教えていただけたら、お気軽に質問に回答してください。

    ありがとうございます。

  • +0

    [コマンドパターン](http://en.wikipedia.org/wiki/Command_pattern)を既に実装しているようですね。 – Irfy

    +0

    はい、それは行動パターンです。私はこれらのクラスをカプセル化して、直接使用しないようにしていますが、一般的なインターフェースを使って、このようなものを考えています: 'PaymentSystem.apiCall.getBalance(params)'(擬似コード)。 apiCallの動作: 'params'でPaymentSystemGetBalanceインスタンスを作成し、' request'を呼び出して 'PaymentSystemGetBalance'(' factory'と 'builder'の組み合わせの種類)のインスタンスを返します。 – Nemoden

    +0

    となります。 'PaymentSystemDeclineIvoice'としましょう。私はこの共通インターフェース(' PaymentSystem.apiCall.DeclineInvoice(params) ')を使っていますが、これは私には便利だと思われます。私はデザインパターンの専門家ではありませんが、このようにすれば、私はここで欠点を認識しません。肥大した質問の種類 - 私はそれを実現する:) – Nemoden

    答えて

    1

    これは、command(Irfyが指摘する)に類似している可能性があります。

    基本クラスのどのサブクラスを使用するか(つまり、いくつかのコンストラクタパラメータを使用するよりも合理的です)を決定する複雑なロジックがある場合は、factoryパターンを使用できます。

    私はstrategyもそこに投げ捨てますが、私たちはオフトラックになるかもしれません。

    デザインパターンに関する一般的な注意点として、目的に合わせて使用​​する必要があります。

    1. 大きくコード可読性
    2. 大きくコードの再利用:典型的にはパターンがために使用されます。
    3. 変更されないものとは変更される場合があります。

    特に、選択しているサブクラスが将来変更される可能性がある場合、使用するサブクラスを抽象化するとよいでしょう。ファクトリパターンは、このロジックを単一のクラスにカプセル化することでこれを行います。

    私は、あなたがいくつかのクラスを使ってメソッドのように見えることを奇妙に感じます。しかし、別のAPIを使用しているように聞こえるので、さらにアドバイスするためにはさらに詳しい情報が必要です。

    +0

    あなたの答えをありがとう - それは感謝します。私の@lrfyへの応答を見てください。あなたが別のAPIを使っているように聞こえる。 YEP。 「もっと助言するためにはもっと情報が必要だ」さて、書類はロシア語で残念ながら:)この制度はこのように動作します。受取人に請求書を発行し、システムにログインし、支払ってウェブサイトに戻って、請求書のステータスを確認することができます。受取人の存在を確認する。彼が支払った/または拒否した後、商人(支払いシステム)が私たちに通知します(私たちのウェブサイトへのHTTPコール)。それはかなりです、私はここで何を提供できるか分かりません。 – Nemoden

    +0

    お返事ありがとうございました。私はコーディングの神にこれを与えなければならないかもしれません。コードやUMLなどが表示されない限り、私は自信を持って提案することはできません。また、基本的なデザインパターンに精通していることも明らかになりました。 –

    +0

    あなたが使っている言語がわからないことはありません= P –

    関連する問題