0

Userクラスと 2 つのサブクラスEmployeeCustomer. この階層を、ユーザーのタイプを指定するための列を持つ DB の階層ごとのテーブルとして実装しました。このテーブルをクエリするときに、正しいタイプのオブジェクトを返す必要があります。

CustomerDAOorのようなオブジェクトのタイプごとに個別のDAOが必要なEmployeeDAOので、それぞれがそれぞれCustomerの andEmployeeオブジェクトを返します。もしそうなら、DAOFactory使用せずにそれらを取得する方法:

if(type.equlas('customer'))
    return customerDao;
else
    retrun employeeDao;

実装する型Userが変わる可能性があり、毎回条件を変更したくないためです。

それとも他に方法はありますか?任意のアイデアをいただければ幸いです。

注: ORM フレームワークは使用しておらず、使用する予定もありません。

4

1 に答える 1

0

各タイプの永続性コードが同じである場合、1つの汎用DAOを持つことができます。

したがって、ユーザーdaoは、次のようになります。

interface DAO<T, ID> {
  T create(T t);
  T read(ID id);
  T update(T t);
  void delete(T t);  
}

class UserDAO<T extends User> implements DAO<T> {
    // Your methods for crud operations will be limited to types of User.
}

次に、ファクトリクラスは、正しいタイプを指定するだけで、正しいDAOをインスタンス化できます。

class DAOFactory {
  public UserDAO<Employee> getEmployeeDAO() {
    return new UserDAO<Employee> ();
  }
}

よろしく
ユスフ

于 2011-07-08T23:17:20.863 に答える