Java静的エージェントの実装

1879 ワード

静的エージェント、他のJavaクラスを使用しないで動的にインタフェースを呼び出す異なる実現静的エージェント、利点:他のクラスを必要とせず、簡単な欠点を実現する:ソースコードを変更してインタフェースUserDaoを実現する必要がある
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();
	}