设计模式 代理模式 js java 代码实现代理类

代理模式

大白话: 为一个对象有效的控制,增删改查,都可以剪头,代理的对象可以当成一个分身;

详细讲解

  • 核心思想:访问一个类时候,可以监听做一些控制;
  • 解决什么:在直接访问是带来一系列的问题。比如:访问对象在远程机器上;等等
  • 何时使用:在需要控制对象,进阶监听,获取提供访问;
  • 如何实现:使用Proxy

生活案例:

  • 商务助手,谈生意需要先去找助手,助手判断对方是否满足,是则在通知老板;
  • 猪八戒高老庄找媳妇,结果是孙悟空变的,孙悟空就是女生代理。
  • 网上买东西。APP就是代理东西。然后用户在网上买,线下收到则发货;完成交易
  • Windows 软件分享快捷键到桌面

实战案例

  • vue响应式监听
  • 移动端模拟键盘 & 虚拟键盘
  • 科学上网梯子

优点

  • 职责清晰
  • 高扩展性
  • 智能化

缺点

  • 因为访问过程中间加了处理,相比直接访问速度变慢;
  • 实现代理需要很多额外工作,有些代理模式实现非常复杂;

代码实现

// 受代理人
let user = {
    name: "小红",
    age: 15
  };

  // 用户代理人
const  userProxy = new Proxy(user, {
    get(target, key) {
      let result = target[key];
      if (key === "age") result += "岁";
      return result;
    },
    set(target, key, value) {
      if (key === "age" && typeof value !== "number") {
        throw Error("age字段必须为Number类型");
      }
      return Reflect.set(target, key, value);
    }
});
// 处理访问
console.log(`${userProxy.age}`);  // 打印:15岁
// 处理修改
userProxy.age = "abc";  // 打印:报错。必须传number
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值