DbUserManager is responsible for creating or remove the DbUser object from memory. So on Manager layer,it is just DbUserManager to focus on creating or destroying the DbUser object(creatUser()&deleteUser()) On Database layer,it is just DbUser to operate on database.
I'm sorry.Now i can't input the chinese. Yes,you are right.In DbUserManager deleteUser(),it directly operate on the database.It is not a good design. Suggest to move deleteUser() to DbUser class. Before this DbUser object was remove from Cache,this method should be invoked.
No,i don't think so. If use DAO, SQL language can't coded in both DbUserManager and DbUser. DbUserManager's design uses FACADE design pattern.Client class just uses DbUserManager's method to do common things and need not care detail implementation in DbUser class.There will also be a class named "DAOFactory" to create a suite of DAO objects named "SQLServerDAO" or "OracleDAO" .etc