エージェントモードの静的エージェント


エージェント・モードの役割:
他のオブジェクトへのアクセスを制御するプロキシを提供します.
エージェントを使用する理由:
場合によっては、あるクライアントが別のオブジェクトを直接参照したくないか、または直接参照できない場合があります.エージェントオブジェクトは、クライアントとターゲットオブジェクトの間で仲介の役割を果たすことができます.この場合、エージェントを使用できます.
エージェント・モードの例:
/**
 *    
 * 
 * @author MuLing
 * 
 */
public class User {
	private String userId;
	private String userName;
        //setter getter      
}

ユーザー管理インタフェースクラス:
package org.ml.manager;

import java.util.List;
import org.ml.bean.User;/**
 *       
 * @author MuLing
 *
 */
public interface UserManager {
	public void addUser(User user);

	public void delUser(String userId);

	public List<User> listUser();
}

ユーザー管理実装クラス:
package org.ml.manager.impl;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.ml.bean.User;
import org.ml.util.DatabaseUtil;
import org.ml.manager.UserManager;

/**
 *        
 * 
 * @author MuLing
 * 
 */
public class UserManagerImpl implements UserManager {

	private Database database;

	public UserManagerImpl() {
		database = Database.getInstance();
	}

	public void addUser(User user) {
		database.getData().put(user.getUserId(), user);
	}

	public void delUser(String userId) {
		database.getData().remove(userId);
	}

	public List<User> listUser() {
		List<User> list = new ArrayList<User>();
		Set<String> keys = Database.getInstance().getData().keySet();
		Iterator<String> iter = keys.iterator();
		while (iter.hasNext()) {
			String key = iter.next();
			list.add((User) Database.getInstance().getData().get(key));
		}
		return list;
	}
}

ユーザー管理エージェントクラス:
package org.ml.manager.proxy;

import java.util.List;

import org.ml.bean.User;
import org.ml.manager.UserManager;
/**
 *    
 * @author MuLing
 *
 */
public class UserManagerProxy implements UserManager {

	private UserManager um;

	public UserManagerProxy(UserManager um) {
		this.um = um;
	}
 
	public void addUser(User user) {
		System.out.println("----        ----");
		try {
			um.addUser(user);
			System.out.println("----        ----");
		} catch (Exception e) {
			System.out.println("----        ----");
		}
		System.out.println("----        ----");
	}
 
	public void delUser(String userId) {
		System.out.println("----        ----");
		try {
			um.delUser(userId);
			System.out.println("----        ----");
		} catch (Exception e) {
			System.out.println("----        ----");
		}
		System.out.println("----        ----");
	}
 
	public List<User> listUser() {
		List<User> list = null;
		System.out.println("----        ----");
		try {
			list = um.listUser();
			System.out.println("----        ----");
		} catch (Exception e) {
			System.out.println("----        ----");
		}
		System.out.println("----        ----");
		return list;
	}
}

データストアツールクラス:
package org.ml.util;

import java.util.HashMap;
import java.util.Map;
/**
 *        
 * @author MuLing
 *
 */
public class DatabaseUtil {
	private static DatabaseUtil instance = null;

	private DatabaseUtil() {
	}

	public static DatabaseUtil getInstance() {
		if (instance == null)
			instance = new DatabaseUtil();
		return instance;
	}

	public Map<String, Object> getData() {
		return data;
	}

	private Map<String, Object> data = new HashMap<String, Object>();

}

マスターメソッド操作クラス:
package org.ml.main;

import java.util.List;

import org.ml.bean.User;
import org.ml.manager.UserManager;
import org.ml.manager.impl.UserManagerImpl;
import org.ml.manager.proxy.UserManagerProxy;

public class Main {
	public static void main(String[] args) {
		UserManager um = new UserManagerProxy(new UserManagerImpl());

		System.out.println("===============================================");
		User user = new User();
		user.setUserId("1001");
		user.setUserName("  ");
		um.addUser(user);//       

		System.out.println("===============================================");
		um.delUser(user.getUserId());//       

		System.out.println("===============================================");

		user = new User();
		user.setUserId("1001");
		user.setUserName("  ");
		um.addUser(user);//       
		System.out.println("===============================================");
		user = new User();
		user.setUserId("1002");
		user.setUserName("  ");
		um.addUser(user);//       
		System.out.println("===============================================");

		//          
		List<User> list = um.listUser();

		System.out.println("===============================================");
		//          
		for (User u : list) {
			System.out.println(u.getUserId() + "--->" + u.getUserName());
		}
		System.out.println("===============================================");
	}
}

実行結果:
===============================================
----        ----
----        ----
----        ----
===============================================
----        ----
----        ----
----        ----
===============================================
----        ----
----        ----
----        ----
===============================================
----        ----
----        ----
----        ----
===============================================
----        ----
----        ----
----        ----
===============================================
1001--->  
1002--->  
===============================================

以上は自分の学习の记录のためだけで、详しく说明していないで、完全なコードのを见てここまでダウンロードすることができますhttp://download.csdn.net/user/cselmu9