公开,我保证每个人都可以在注释认证中解释代理模式。
只是遇到这样一个问题:如何自己实现?
我喜欢这个问题,我可以继续每天写,删除和修改的人,我将继续进行,今天我将学习代理模式和所有学习代理机构。和实际战斗示例:https://github.com/javastacks/javastack
更换的含义可以替换所有功能,即与原始功能相同的规格。
代理模式类似于装饰模式。以前的装饰设备不是很好。这是另一个示例。
在安静的下午,我来到咖啡馆,想喝一杯咖啡。
给您咖啡界面:
意识到默认苦咖啡:
默认顺序逻辑:
订购一杯咖啡。
优雅的服务员带来了咖啡,喝了一口,有点苦。
如果您想加入一些糖,请对服务员说:“您好,请在我的咖啡中加入一些糖。”
然后,服务员拿走了我的咖啡,用咖啡加糖,最后给我用糖给我咖啡。
看看咖啡的成分,对,它确实会添加糖!
注意这两行:
哪种场景适合装饰模式,我有一个对象,但是该对象的功能无法满足,因此我会用装饰器装饰他。
周末,我再次来到咖啡馆,准备享受一个宁静的下午。
“先生,你想喝什么?”礼貌的服务员向前走。
我上次订购的咖啡太苦了,所以这次我不得不加糖。
“我想要一杯糖咖啡。”
这是糖咖啡。实际上,内部仍然是咖啡。这只是一个添加一些公式的新课程。可以在菜单上展示的新饮料。
订购咖啡:
只是想和咖啡的陪伴度过一个美丽的下午。
故事完成后,两者都包装到原始对象,原始对象的示例是外部性能的差异。
装饰模式:我点了咖啡,发现它太苦了,而不是我想要的,然后用装饰设备加了一点糖。
代理模式:直接加糖咖啡。
非常微妙的差异,我希望每个人都不会混淆。
去查看与代理模式相关的信息,您如何理解各种各样的信息。
此外,在线设计模型上的许多文章都在复制我和我。一个是错的,都是错的。
我认为我需要纠正它。如果语言没有界面,它不能是代理模式吗?但是,该界面允许我们满足依赖和反转原理以开发和减少耦合。我可以使用抽象类吗?用班级继承?是的。
我知道,什么写作不喜欢玩?
此外,设计模式系列的面部测试问题和答案均已整理出来。微信搜索Java Technology Stack,将其发送到后台:访谈,您可以在线阅读。
设计了设计模式,因此我上面提到的代理模式不仅适用于接口。
:面部编程是面向对象的编程的补充。如果您不了解这句话,请学习以对象为导向的对象以了解原因。
我们将声明切割表面,也就是说,它是在某个方法之前,之后或之后执行的。实现是代理模式。
我最近刚刚写了SMS验证代码,以此为例。
主功能:
老板改变了需求,验证代码必须花钱。老板想看看他在短信上花了多少钱。
通常,这必须是声明短信的一种方法,然后计算切面表面中的SMS费用。
但是现在没有框架,也就是说:如何自己实现?
自然,我编写了一个框架来编写框架。我上面讨论过的代理是静态代理,它是在编译期间确定的。但是,该框架的实现是动态代理。它需要在运行时生成代理对象,因为它需要扫描声明以查看哪些类需要生成代理对象。
为统计SMS成本编写类实施接口。
当我写这篇文章时,我终于理解了为什么背景会跳入方法时。
使用处理过程将主函数替换为代理对象。
根据该方法中的方法动态生成类。该类实现了与此类实例化的接口和代理对象。
以上是实现的吗?很难写一个吗?
主函数的代码应放置在容器初始化中,扫描袋子,然后查看哪些类生成代理对象,然后将代理对象构造到容器中。
然后,在方法中,将统计成本的逻辑更改为切割表面的逻辑?
完成?当然,上述方法只能对接口有效。
由于具有动态代理,因此要生成一个实现相应接口的代理类,但不仅是通过接口注入的。
它是通过语句类型找到在容器中相遇的对象,然后记下它。接口是类型,类不是类型吗?
这可以注意。
怎么样?您也可以注意。
因此,动态代理不能是直接注射类型的代理。
自远古时代以来,它一直是英雄,而不是英雄创造了这个时代。
如果有问题,将会有英雄来解决它。
如果动态代理无法解决,所有这些都将移交给。
在这种情况下:
它没有注入接口,也无法求解动态代理。如何解决?根据当前类,它动态生成一个子类并在子类中编织切割逻辑。
然后使用子对象充当父级。这就是我上面说的原因:不要粘在界面上。
因此,那些编织成功的人是可以涵盖父级的方法。
因此,这不是灵丹妙药。该方法是。不能重写子类,当然可以应用。
您正在阅读什么?它真正了解作者的想法,了解作者想赞美和批评什么。
什么是框架?不仅是为了提高开发效率,而且在使用时,就像与设计师进行交流一样。它可以真正理解框架设计师的思维,因此被认为可以理解一个框架。
如果我们可以做到这一点,为什么我们不能设计真正属于自己的框架?
作者:张Xishuo
资料来源:https://sementfault.com/a/1190000019148468