为什么要学习代理模式?因为这就是springAOP的底层!
代理模式的分类:

  • 静态代理
  • 动态代理

静态代理:

角色分析:

  • 抽象对象:一般会使用接口或者抽象类来解决(租房)
  • 真实的角色:被代理的角色。(房东)
  • 代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属的操作(中介)
  • 客户:访问代理对象的人(客户)。

租房:

  1. package com.bernard.demo01;
  2. public interface Rent {
  3. public void rent();
  4. }

房东:

  1. package com.bernard.demo01;
  2. public class Host implements Rent{
  3. @Override
  4. public void rent() {
  5. System.out.println("房东要出租房间!");
  6. }
  7. }

中介:

  1. package com.bernard.demo01;
  2. public class Proxy implements Rent{
  3. private Host host;
  4. public Proxy() {
  5. }
  6. public Proxy(Host host) {
  7. this.host = host;
  8. }
  9. @Override
  10. public void rent() {
  11. seeHouse();
  12. host.rent();
  13. hetong();
  14. charge();
  15. }
  16. public void seeHouse(){
  17. System.out.println("看房");
  18. }
  19. public void hetong(){
  20. System.out.println("签合同");
  21. }
  22. public void charge(){
  23. System.out.println("收取中介费");
  24. }
  25. }

客户:

  1. package com.bernard.demo01;
  2. public class Client {
  3. public static void main(String[] args) {
  4. Host host = new Host();
  5. Proxy proxy = new Proxy(host);
  6. proxy.rent();
  7. }
  8. }