User
クラスと2つのサブクラスEmployee
とCustomer
があるとします。私はDBの階層ごとのテーブルとしてこの階層を実装し、ユーザのタイプを指定するカラムを持っていました。私はこのテーブルを照会するときに正しいタイプのオブジェクトを返す必要があります。階層あたりの表の構造体のDAOの取得
は私がCustomerDAO
またはEmployeeDAO
のようなオブジェクトの種類ごとに別々のDAOが必要ですので、それぞれが、それぞれのCustomer
とEmployee
オブジェクトを返します。もしそうであれば使用しなくてもDAOFactory
からそれらを取得する方法:
if(type.equlas('customer'))
return customerDao;
else
retrun employeeDao;
User
を実装するタイプが変更される可能性があり、私は条件を毎回変更したくないので。
他の方法がありますか?任意のアイデアをいただければ幸いです。
注:私はORMフレームワークを使用しておらず、使用する予定もありません。
あなたのクラス階層についてもう少し言うことはできますか? EmployeeはUserのサブクラスですか、あるいは2つのエンティティ間にリンケージがありますか?また、あなたのDAOからどのような参照タイプが返ってくると思いますか? – jtoberon
@jtoberonはい従業員と顧客はユーザーのタイプです。私が持っているのはユーザーIDだけです。これらのIDに基づいて、私は同じテーブルを照会し、ユーザーがタイプcustomerの場合は「Customer」を、タイプが従業員の場合は「Employee」を取得する必要があります。 – doctrey