萌新第一次学设计模式,之前是看了一篇关于为什么要使用aop的文章,里面涉及到了设计模式,所以开始学习。
代理:自己不愿意或者做不到的事情需要叫别人去做。
为什么需要用到代理:
- 遇到不敢瞎扩展或者改动的接口
- 符合开闭原则
- 装x
代理模式分为静态代理和动态代理;
静态代理:一个真实对象对应一个代理对象,这种方式如果需要代理的对象过多,代码冗余,臃肿。
创建一个代理类,用来代理指定对象的操作。
比如实现一个登陆功能
登陆接口,登陆成功打印信息
public interface LoginInterface {
void print();
}
实现登陆打印
//实现登陆程序打印
public class LoginPrint implements LoginInterface {
@Override
public void print() {
System.out.println("二狗!");
}
}
跟改需求,在不修改源码的情况下,添加验证登陆的功能,代理开始上场
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("ergou")&&password.equals("123456")){
System.out.println("验证通过!");
print();
}else{
System.out.println("验证未通过!");
}
}
@Override
public void print() {
proxyInterface.print();
}
}
动态代理: