结构型模式-代理模式
2020-03-12 本文已影响0人
格林哈
0 结构型模式
- 涉及如何组合类和对象以形成更大的结构。
- 和类有关的结构模式涉及如何合理地使用继承机制。
- 和对象有关的结构型模式涉及如何合理地使用对象组合机制。
1 代理模式
-
1.1 概念: 为其他对象提供一种代理以控制对这个对象的访问。
-
1.2 场合:
- 远程代理
- 为对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。
- 虚拟代理
- 如果一个对象的创建需要花费较多的时间,就应当给该对象提供与一个代理模式
- 安全代理
- 用来控制真实对象访问的权限。
- 远程代理
-
1.3 代理模式UML
- image.png
-
1.4 角色
-
ISubject 该接口是对被访问者或者被访问资源的抽象
-
SubjectImpl 被访问者或者被访问资源的具体实现类
-
SubjectProxy 被访问者或者被访问资源的代理实现类
-
Client 访问者的抽象角色
package com.mg.springjiemi.proxy;
public interface ISubject {
public String request();
}
package com.mg.springjiemi.proxy;
public class SubjectImpl implements ISubject {
@Override
public String request() {
return "跟老板交谈";
}
}
package com.mg.springjiemi.proxy;
public class SubjectProxy implements ISubject {
ISubject iSubject;
public SubjectProxy(ISubject iSubject) {
this.iSubject = iSubject;
}
@Override
public String request() {
System.out.println("先跟秘书交谈,安全代理,虚拟代理,远程代理");
return iSubject.request();
}
}
package com.mg.springjiemi.proxy;
public class Client {
public static void main(String[] args) {
ISubject iSubject = new SubjectImpl();
SubjectProxy proxy = new SubjectProxy(iSubject);
String value = proxy.request();
System.out.println(value);
}
}