Java静的エージェントの実装
静的エージェント、他のJavaクラスを使用しないで動的にインタフェースを呼び出す異なる実現静的エージェント、利点:他のクラスを必要とせず、簡単な欠点を実現する:ソースコードを変更してインタフェースUserDaoを実現する必要がある
2つの一般的な実装
エージェントのインタフェース実装
public interface UserDao {
void addUser();
void deleteUser();
}
2つの一般的な実装
public class UserDaoOracleImpl implements UserDao {
@Override
public void addUser() {
System.out.println("UserDaoOracleImpl.addUser()");
}
@Override
public void deleteUser() {
System.out.println("UserDaoOracleImpl.deleteUser()");
}
}
public class UserDaoMySqlImpl implements UserDao {
@Override
public void addUser() {
System.out.println("UserDaoMySqlImpl.addUser()");
}
@Override
public void deleteUser() {
System.out.println("UserDaoMySqlImpl.deleteUser()");
}
}
エージェントのインタフェース実装
public class UserDaoProxyImpl implements UserDao {
public UserDaoProxyImpl(UserDao dao) {
super();
public static void main(String[] args) {
UserDao dao1 = new UserDaoMySqlImpl();
UserDao dao2 = new UserDaoOracleImpl();
UserDao dao3 = new UserDaoProxyImpl(dao2);
dao3.addUser();
}
this.dao = dao;
}
private UserDao dao = null;
@Override
public void addUser() {
dao.addUser();
}
@Override
public void deleteUser() {
dao.deleteUser();
}
}
テストクラス: public static void main(String[] args) {
UserDao dao1 = new UserDaoMySqlImpl();
UserDao dao2 = new UserDaoOracleImpl();
UserDao dao3 = new UserDaoProxyImpl(dao2);
dao3.addUser();
}