浅谈自己对Java代理模式的理解--即为什么要用&怎么用

                首先,国际惯例,上Java代理模式的定义:

                       Java代理模式:对其他对象提供一种代理以控制对这个对象的访问。

             定义很简单,就一句话,怎么去理解,不急,先听一个小故事:

              故事角色:小明(从小斗智斗勇,多次死里逃生,逼格高),小王(还未成长为隔壁老王的四好青年)

              一日,公司boss让小明写一个登陆程序,并打印出登陆用名,小明面带诡异的微笑,“啪啪”敲出代码:

                   

//先写个接口吧
public interface LoginInterface {
       void print();
}
         
//实现登陆程序打印
public class LoginPrint implements LoginInterface {
    @Override
    public void print() {
    	System.out.println("小明!");
    }
}
           小明将所写代码提交给boss,翌日小明被boss打死(BOSS:尼玛,登陆验证都没有哦),boss又叫小王继续完成这个登陆程序,加上登陆验证,但不准改动小明所写的源代码(BOSS:哼,这小王最近跟我小姨子走的太近了!!!)。

           小王看完小明所写的代码,直呼“WTF!!!”,BOSS又不让改动源码,“哈哈,不过山人自有妙计。嘿嘿!!!看来下次要搬到BOSS隔壁去啊!!!”

           几日后,小王凭借超人的智慧及无可阻挡的魅力,在BOSS的小别墅里完成了代码:

public class ProxyClass  implements LoginInterface {
	
	private LoginInterface proxyInterface;
	
	public ProxyClass(LoginInterface proxyInterface){
		this.proxyInterface=proxyInterface;
	}
	//登陆验证
	public void loginCheck(String username,String password){
		if(username.equals("xiaoming")&&password.equals("123456")){
			System.out.println("验证通过!");
			print();			
		}else{
			System.out.println("验证未通过!");
		}
	}
	
    @Override
    public void print() {
    	proxyInterface.print();
    	
    }
}
             次日,提交BOSS,BOSS满怀心事的验证小王的代码:

public class Test {

	public static void main(String[] args) {
       LoginPrint realClass=new LoginPrint();
       ProxyClass proxyClass=new ProxyClass(realClass);
       proxyClass.loginCheck("xiaoming","123456");
	}
}

          面对以下的结果,boss无奈长叹一声!

          
           故事结束,这个故事简洁明了的说出了代理的作用,及为什么要用代理:老板不让小王更改小明所写的登陆类LoginPrint。小王采取的方法就是采用代理模式写出了登陆验证ProxyClass,完成任务。

           

  


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值