设计模式-代理模式

定义:为其他对象提供一种代理以控制这个对象的访问。

使用场景:在一些情况下,客户端不能直接访问一个对象,那么代理就起到中介的作用。有时,一次性创建一个对象需要很大开销时,可以使用代理来存储这个对象的信息,当需要那一部分时,再由创建。有时,当使用一个对象之前还需要做一些处理,这时候也可以用到代理。

一个最简单的代理模式的demo:我们在登陆一个系统时,登陆之前先检查用户名是否合法,并且纪录登陆和退出的时间。代码如下:

public class LoginAction {

	private String username;
	private String password;
	public LoginAction(String username,String password) {
		this.username = username;
		this.password = password;
	}
	
	public void login() {
		System.out.println(username+",login success!");
	}
	public void loginOut() {
		System.out.println(username+",88");
	}
}

public class LoginActionProxy {

	public void login(String username,String password) {
		if(check(username)) {
			LoginAction loginAction = new LoginAction(username, password);
			loginAction.login();
		}
	}
	public void loginOut(String username) {
		logEnd(username);
	}
	private boolean check(String username) {
		System.out.println(username+" is ok!");
		return true;
	}
	private void logStart(String username) {
		System.out.println(username+",start,time="+System.currentTimeMillis());
		
	}
	private void logEnd(String username) {
		System.out.println(username+",end,time="+System.currentTimeMillis());
	}
}

public class Client {

	public static void main(String[] args) {
		String username = "zhangsan";
		String password = "111222";
		LoginActionProxy proxy = new LoginActionProxy();
		proxy.login(username, password);
		
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		proxy.loginOut(username);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值