2011-09-25 10 views
5

は私が思ったんだけど、このインタビューの質問を得た:OOPデザイン質問

ソフトウェア会社は、従業員を管理アプリを設計して、他の機能の中で、給与を計算します。

、顧客の要件に適合し、現在の構成は次のとおりです。

abstract Class Employee; 
Class Manager extends Employee; 
Class Engineer extends Employee; 

顧客今時給、月給で働く従業員のための給与計算の種類をサポートする機能を追加したいと思います。エンジニアとマネージャのどちらでもかまいません。

また、顧客は将来、他の種類の給与を追加する旨をソフトウェア会社に通知しました。

質問 - これはどのように設計しますか?どのようなデザインパターンの解決策に落ちるのでしょうか?

ありがとうございます!

http://en.wikipedia.org/wiki/Strategy_pattern

メイク "Salary_Calculation" 従業員に関連した戦略:

答えて

7

は、戦略パターンを適用します。 "Salary_Calculation"はインタフェースまたは抽象基本クラスでなければならず、各給与計算モデルはそのサブクラスです。

+0

ありがとうございます。それは私の感覚でした。私は他の意見を見るのに1時間待つでしょう。ところで、これは戦略よりデリゲートではありませんか? http://p2p.wrox.com/book-professional-php-design-patterns/78122-differences-between-delegate-strategy-pattern.html – Turd

+1

ここで、「委任パターン」を使用すると、従業員は給与はそれだけではなく、これを戦略オブジェクトに委譲します。それは、異なる給与計算モデルについては何も言いません。 「戦略パターン」とは、給与計算の種類ごとに異なるサブクラスを持つことを意味します。計算がどこで行われるかは定義されていません(異なるサブクラスは、「従業員」が正しい計算を行うのを助けるメタデータを提供するだけかもしれません)。どちらのパターンもここに適用されます。 –

1

SalaryCalculatorインターフェイスを追加し、給与タイプを使用してEmployeeオブジェクトの構築中にSalaryCalculatorオブジェクトをインスタンス化します。 SalaryCalculaotrオブジェクトは、各給与タイプの給与計算を処理します。