这一章她学会了代理正主不露面中间挡一层。起因是她迷上了一个所有事都走经纪人的爱豆。晚上八点沙发“我跟你讲我这个爱豆微博从来不自己发全是经纪人发的。”“连广告、采访都要先过经纪人那关。”“那你觉得为啥”“明星哪应付得过来每个人——经纪人先把不合适的挡掉靠谱的、谈好的才到正主那儿。正主专心干自己的事就行。”“对。这就是代理模式客户端不直接碰真对象中间站一个’经纪人’把关。”第一步花钱的活用到了才做“程序里最典型的是加载大图。你做个图库一打开就new Image()把所有图读进内存”“那不得卡死……用户根本没看那几张图。”“对。让代理来做’什么时候才真正加载’——”// 接口图片interfaceImage{voiddisplay();}// 真对象加载大图很费资源classRealImageimplementsImage{RealImage(Stringfile){loadFromDisk();}// 加载很贵publicvoiddisplay(){/* 显示 */}}// 代理替真图片把关classImageProxyimplementsImage{privateRealImagereal;// 真正干活的用到才造privateStringfile;publicvoiddisplay(){if(realnull){realnewRealImage(file);// 真要看才加载懒加载}real.display();}}“客户端拿到的是ImageProxy可它以为自己在用真图片。没看之前不加载、不占内存——控制权全在代理手里。”“哦‘用到才造’。”第二步同一个经纪人其实有四种干法那代理只有’懒加载’这一种她问。“不止。按目的分常见的四种——”“虚代理就是刚说的——真身太重先占个位真要用到了才去请。100MB 的高清大图先放个缩略图顶着”“保护代理你爱豆经纪人那种——没权限的、不合适的直接挡在门外。普通用户和 VIP 调同一个下载接口权限不够先被拦”“远程代理把’真身在很远的地方’藏起来。你就在本地调一个接口它替你搞定网络通信、序列化你感觉跟调本地方法一样。RPC 远程服务调用”“日志与监控代理不碰你的核心业务就在外层顺手记个耗时、写个日志、管个事务。你代码一行没改多出个’切面’。Spring AOP”“哦——躲远、挡人、拖延、记账四种。”“……还挺会总结。”第三步跟适配器、装饰器怎么分等等她又举手“这不又是’包一层’吗跟加料那个、转换头那个……”“三个都包一层分工不同——”“适配器接口装不上包一层换接口。转换插头”“装饰器包一层加功能真对象照原样。奶茶加料”“代理包一层管访问——啥时候能用、让不让进。经纪人”“哦——换长相、加 buff、管进出。”“那说说吧今天学了啥”她自己总结了一句她刷着爱豆的微博说“明星不能直接应付所有人中间站个经纪人——挡不合适的把关合同的正主专心干正事。程序里也一样代理就干四种活虚代理先占位、用到了才加载保护代理守门口、没权限不让进远程代理把远方的真身藏起来调起来跟本地一样还有监控代理在外层悄悄记账、记耗时。它跟适配器、装饰器不一样转换头是换接口加料是加功能代理是管进出。”“……全对。”嘿嘿。她把脏衣服往我怀里一塞“去把这桶衣服洗了。”“……我洗”不然呢她瞪着眼睛握紧了拳头。“……想不想亲自去感受一下设计模式”“什么模式”“外观。就藏在这洗衣机里。”……她抱着衣服走过去回头瞪我“我怎么觉得被你忽悠着洗了衣服”“这叫学以致用——下一章外观藏在洗衣机里的设计模式。”附这一章她学到的就一句话——正主不露面中间挡一层管进出——代理。下一篇外观——藏在洗衣机里的设计模式。
