0

API 呼び出しをバージョンごとに変更しているサーバーと通信するための統一された方法を提供するライブラリを実装しようとしています。私はそのように実装する予定です:

connect.rb:

class Connect
    def self.getConn(params)
        case params[:version]
            when '4.0' then return Connect4.new(params)
            when '5.0' then return Connect5.new(params)
            else 'Version not supported.'
        end

    end 
end

class Connect4
    def initialize(params)
        # Code for v4.
    end 
end

class Connect5
    def initialize(params)
        # Code for v5.
    end 
end

test.rb:

require 'connect'

conn = Connect.getConn(:version => '4.0')

puts conn

うまくいくと思いますが、私はまだルビーに慣れていないので、考慮していない問題があるかもしれません。この種の「課題」を処理するためのベスト プラクティスはありますか?

4

1 に答える 1

1

あなたのアプローチに何か問題があるとは思いません。確かにうまくいく可能性があります。一方で、API へのエントリ ポイントが複数ある場合、それらのすべてにバージョンを渡すのはちょっと面倒です。いくつかのグローバル設定で解決できますが、そこには行きません...

Twitter の Cassandra gem には興味深いアプローチがあり、バージョン番号を渡す代わりに、別のサブライブラリが必要です ( docs ):

require 'cassandra' # default version
require 'cassandra/1.0' # 1.0 version

これは、このようにバージョンを選択できるため、 Bundlerで使用する場合に特に便利です。

gem "cassandra", require: "cassandra/1.0"

これで、アプリケーション全体が完了しました。

于 2013-01-16T18:47:55.387 に答える