0

私はRubyでいくつかの給与計算ソフトウェアをコーディングしています.これは、米国とカナダの両方の企業で使用されることを意図しています.(将来的に他の場所で拡張される可能性があります.)明らかに、従業員のようないくつかのクラスでは、いくつかの共有機能がありますが、違いもたくさん。たとえば、一部の規制データとビジネス ロジックは、いずれかの国でのみ使用する必要があります。

このアプリでは、会社は 1 種類の従業員しか含めることができないため (つまり、会社の従業員はカナダ人またはアメリカ人のみである可能性があります)、継承階層を作成する代わりに、ミックスインを使用して実行時にさまざまな機能を追加することを考えていました。これは非常に面倒になる可能性があります。国によって違いがあるクラスは Employee クラスだけではないため、すべてのクラスを動的に拡張して、実行時に地域の機能を含めると役立つようです。

これはアプリを整理する効果的な方法ですか、それとも欠点はありますか?

4

2 に答える 2

1

これは、モジュールのかなり良い使用例のように思えます。ただし、Ruby の標準ライブラリにはデリゲータ パターンもありますが、これを使用して特定のメッセージを一般的な従業員オブジェクトに転送することもできます。要件に関する知識がほとんどないため、何かを推奨することは常に困難です。

ミックスインについてさらに読みたい場合は、Russ Olsen による「Eloquent Ruby」に適切な章があります (第 16 章「モジュールをミックスインとして使用する」)。そのためだけに本を買うのはお勧めしませんが、とにかく読んでよかったです。その本のどこかに、あなたがやろうとしていることと多少似ている例があるようです(異なるコンテキスト、同じ原則)。

于 2012-06-11T17:58:04.713 に答える
0

一般に、ほとんどの場合、継承の代わりにミックスインを使用する方が良いようです。継承は非常に特殊な種類の関係であり、多くの場合、それが提供する力よりも複雑さを増しているように見えます。多くの場合、継承は基本クラスをいじる必要があるように思われます。新しいサブクラスが必要な場合、基本クラスは、1 つまたは複数のサブクラス用の特別なロジックで成長する傾向があります。ミックスインはより小さく、1 つの問題に集中する傾向があるため、より再利用しやすい傾向があることがわかりました。

于 2012-06-11T19:30:18.463 に答える