私は製品に関するウェブページのリストを持っています。物を分類するためのデザインパターン
if title =~ /pet/
13
elsif title =~ /therapy|SPA|massaging|salon|hotspring/
5
elsif title =~ /present|gift/
4
# and so on...
end
ので、分類は、文字列キーワードマッチングによって行われます。以前のシステムでは、我々は次のように、各ページを分類する他/ if文を使用していました。今は新しいシステムを作っているので、私は拡張性のための部屋があることを確認したい。私はクラス分けごとに別々のクラスを持つことはあまりにも重いと考えていました。
そして私は多分、それぞれが良いと思う方法があると思います。gift?()
とpet?()
のようにしてください。しかし、私はこれをやっていることも論理の中で何かをハードコーディングすることを意味すると思います。この種の分類を行うためのデザインパターンはありますか?
ありがとうございました。パフォーマンスに関しては、配列、ハッシュ、および選択ケースの間に大きな違いがありますか?また、select-case/ifステートメントにlambdaを使用しますか? – lulalala
@lulalala:パフォーマンスは、いつものように、あなたの実際の状況によって異なります。私は、 'case'が最も速く、ArrayバージョンがHashよりも少し速いと思うだろう(ただし、ベンチマークだけが知っている)。とにかくすべての静的コードであるので、あなたは 'case'でlambdasを使うことができますが、多くの点はありません。 Array/Hashのケースではlambdaを使用するのが理にかなっています。なぜなら、静的なロジックを解釈されたデータに置き換えているからであり、lambdaは小さなコードをデータに変換する標準的な方法です。 –