沉浸式走进真实用户需求,带你走进JS脱口秀,体验不一样的代理模式

302 阅读2分钟

js 脱口秀 #代理模式

假设有这样一个场景,你在学校的一个回眸,看见了一个让你一眼万年的女生(小美),然后你准备去买花送个她,表达你的爱意。当你买好花后,转念一想,有点瘌蛤蟆吃天鹅肉,你又不想放弃,又害怕被泼洗脚水,于是你找到了你的老乡,小丽。一打听小丽是小美的好朋友,然后你拜托小丽去给你送花。

编程的目的,可以总结为送花,但是,现实的世界往往并没用那么简单,要考虑到一些的“人情世故”,这时候,小丽的出现尤为关键,这时,小丽作为小美的代理,可以帮助你去完成这个任务。这就是代理模式(proxy),以及面向接口的编程。

在JavaScript中,代理模式是一种常见的设计模式,它允许你创建一个对象的代理,以控制对这个对象的访问。这种模式可以用于多种场景,比如权限控制、缓存、日志记录等。在你的例子中,你想要送花给小美,但是可能由于某种原因(比如小美不在场),你不能直接将花送给小美。这时,小丽作为小美的代理,可以帮助你完成这个任务。

下面是一个简单的JavaScript示例,展示了如何使用代理模式来实现这个故事情节:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=, initial-scale=1.0">
    <title>面向对象的世界</title>
</head>
<body>
    <script>

        const wsl = {
            name :'魏森林',
            age:22,
            company:undefined,//未定义
            girlFriend: null,
            hometown:'石城',
            isSingle:true,
            eating:function(){
                console.log('干饭干饭')
            },
            sendFlower:function(target){
                target.receiveFlower(this);
            }
        }

    const wx={
        name :'万欣',
        xq:50,
        receiveFlower:function(sender){
            //console.log(this.name+'收到了'+sender.name+'送出的花');
            console.log(`${this.name}收到了${sender.name}送出的花`)
            if(this.xq>=90){
                console.log("万达走一波")
            }else{
                console.log("不约,我们不约")
            }
        }
        }
        // wsl.sendFlower(xm);
        xl = {
            name:'小丽',
            hometown:'石城',
            receiveFlower:function(sender){
                // 代替小美收花 实现同样的方法,也就是接口
                if(wx.xq <90){
                    console.log('等一等')
                    setTimeout(function(){
                        wx.xq = 91;
                        wx.receiveFlower(sender);
                    },2000)
                }else {
                    wx.receiveFlower(sender);
                }
            }
        }
        // 当xl也具有和xm一样的receiveFlower方法,xl就可以
        //代替wx收花,proxy代理模式
        //receiveFlower 也叫接口  面向接口编程
        wsl.sendFlower(xl);
    </script>
</body>
</html>

这段代码展示了如何使用JavaScript创建和操作对象,以及如何使用面向对象的思想来组织代码。它还演示了代理模式,这是一种设计模式,允许一个对象代表另一个对象的行为。

总结

在现实世界转变成编码世界的过程中,如何将情商转化为码商,是我们值得思考的问题,面对用户的种种需求,我们应该怎么灵活的使用和设计模式,这是我们在编码过程中,慢慢积累和成长的事情。