2012-04-18 20 views
1

私は抽象クラスのUserクラスと、このクラスから拡張された3クラスのクラス(Admin、Modurator、Lector)を持っています。抽象クラスの拡張クラスとDAO

私のdbには、必要なデータ(UserName/Password/Security_lvl)を持つテーブルUserがあります。

ユーザーのデータベースへの接続はDAOで行います。 Javaで

public class MysqlUserDao implements UserDao { 
    // 
    private static MysqlUserDao instance; 

    // 
    public static MysqlUserDao getInstance() { 
     if (instance == null) 
      instance = new MysqlUserDao(); 
     return instance; 
    } 
public void create(User user) { 
     try { 
      c = MySqlDAOFactory.getInstance().getConnection(); 
      // 
      String sql = "insert into user values (?,?,?)"; 
      // 
      prest = c.prepareStatement(sql); 
      // 
      prest.setString(1, user.getUserName()); 
      prest.setString(2, user.getPassword()); 
      prest.setInt(3, user.getRole().returnSecurityLevel()); 
      // 
      prest.executeUpdate(); 
      // 
     } catch (SQLException e) { 
      JdbcLogging.info("error item" + " :" 
        + e); 
     } finally { 
      MySqlConnectionFactory.getInstance().closeResultSet(rs); 
      MySqlConnectionFactory.getInstance().closeStatement(prest); 
      MySqlConnectionFactory.getInstance().closeConnection(c); 
     } 
    } 

}

ユーザタイプに応じて、私は彼らの特定のメソッドを使用することができるので、私は、特定の管理、Modurator又はレクターオブジェクトを作ります。

今私が持っている問題は、このDAOのユーザーが必要なことです。しかし、ユーザーは抽象的で、私はUserオブジェクトを作成しません。私は他のクラスのそれぞれに対して3つの異なるDAOを作ることができますが、同じようにします。これを行うためのきれいな方法がありますか...。

多分簡単な解決策ですが、私はそれを見ていません。

+1

私は問題が表示されません。データベースに保存するすべてのフィールドは、とにかく 'User'で定義されています。それとも逆の方向で問題を引き起こしていますか? – biziclop

+0

私はUserオブジェクトを与える必要がありますが、私はUserオブジェクトを作成せず、Userクラスから拡張したので、できません。 –

答えて

3

createメソッドにパラメータとしてAdmin、Moderator、またはLectorインスタンスを渡すことができます。 JavaのPolymorphismはそのような振舞いを可能にします。

+1

実際、これは多型の真髄です。 – biziclop

+0

私の愚かな真実...とにかく、thx –

関連する問題