静态代理模式
1.静态代理首先要知道代理的方法
2. 真实对象和代理对象 都持有共同的 “方法”
什么是代理模式?
如:1. 海外买化妆品,去找代购
2. 房东出租房子,去找中介
---- 典型的代理
什么是静态代理模式?
已经知道真实对象的某个方法,创建对应的代理类进行—>访问控制。
房主(真是对象)— 要 租房(真实对象的方法) ---- 找中介(代理) —>
这里的访问控制,就是这种设计模式的优点,哪些情况适合这种设计模式呢?
需要远程访问的对象
创建开销很大的对象
需要提供安全控制的对象
原文链接:https://blog.csdn.net/zhangzhetaojj/article/details/80635999
缺点:
在静态代理模式时,一个真实角色必须对应一个代理角色,如果大量使用会导致类的急剧膨胀;
下面是java实现代码:
- 接口父类:
/**
* 代理模式 -- 抽象父类------持有 真实对象 和 代理对象 的共同方法
*/
public interface Subject {
//出租
void rent ();
}
- 真实对象
/**
* '真实对象 (房主-- 租房)
*/
public class RealSubject implements Subject {
@Override
public void rent() {
//sout
System.out.println("我是房主,----租房子");
}
}
- 代理对象
/**
* 代理 -- 1.静态代理必须持有真实对象
*
* 2. 代理除了持有固定方法,还可以有自己的方法
* 比如 在租房之前 --- 打扫卫生 在租房之后 -- 收小费
*/
public class ProxySubject implements Subject {
private Subject realSubject = new RealSubject();
public void beforeClean() {
System.out.println("我是代理 - before-- 打扫卫生");
}
@Override
public void rent() {
//打扫卫生
beforeClean();
//租房
realSubject.rent();
//收小费
afterGetFee();
}
public void afterGetFee() {
System.out.println("我是代理 - after -- 收取小费");
}
}
- 运行
public class TestDemo {
//psvm
public static void main(String[] args) {
ProxySubject proxySubject = new ProxySubject();
proxySubject.rent();
}
}
结果:
- 我是代理 - before-- 打扫卫生
我是房主,----租房子
我是=代理 - after – 收取小费
代理模式和适配器模式的区别
个人认为的:
代理模式中,真实对象和代理对象都具有相同的功能方法,比如租房,她们共有一个租房方法,实现统一接口
适配器模式中,原对象和适配器,不具备相同功能(方法)