静态代理模式

静态代理模式

1.静态代理首先要知道代理的方法
2. 真实对象和代理对象 都持有共同的 “方法”

什么是代理模式?

如:1. 海外买化妆品,去找代购
2. 房东出租房子,去找中介
---- 典型的代理

什么是静态代理模式?

已经知道真实对象的某个方法,创建对应的代理类进行—>访问控制。
房主(真是对象)— 要 租房(真实对象的方法) ---- 找中介(代理) —>

这里的访问控制,就是这种设计模式的优点,哪些情况适合这种设计模式呢?

需要远程访问的对象
创建开销很大的对象
需要提供安全控制的对象

原文链接:https://blog.csdn.net/zhangzhetaojj/article/details/80635999

缺点:
在静态代理模式时,一个真实角色必须对应一个代理角色,如果大量使用会导致类的急剧膨胀;

下面是java实现代码:

在这里插入图片描述

  1. 接口父类:
/**
 *    代理模式  -- 抽象父类------持有 真实对象  和 代理对象 的共同方法
 */

public interface Subject {

    //出租
    void rent ();

}
  1. 真实对象
/**
 * '真实对象  (房主-- 租房)
 */

public class RealSubject implements Subject {

    @Override
    public void rent() {
        //sout
        System.out.println("我是房主,----租房子");
    }
}
  1. 代理对象
/**
 *  代理 --    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  -- 收取小费");
    }
}
  1. 运行
public class TestDemo {
    //psvm
    public static void main(String[] args) {

        ProxySubject proxySubject = new ProxySubject();
        proxySubject.rent();

    }
}

结果:

  • 我是代理 - before-- 打扫卫生
    我是房主,----租房子
    我是=代理 - after – 收取小费

代理模式和适配器模式的区别

个人认为的:
代理模式中,真实对象和代理对象都具有相同的功能方法,比如租房,她们共有一个租房方法,实现统一接口
适配器模式中,原对象和适配器,不具备相同功能(方法)

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值