ContextWrapper(具有Context的代理)的目的是什么?

问题描述 投票:1回答:1

根据Android文档,ContextWrapperContext的一个“px roxying实现,它简单地将所有调用委托给另一个Context。可以在不改变原始Context的情况下修改行为的子类。”

我对代理模式没有多少经验。它是如何用于此目的的?换句话说,为什么它的间接子类(例如ActivityService)不直接将它子类化呢?

android android-context proxy-pattern
1个回答
1
投票

能够覆盖它的一些行为。例如,您将拥有应用程序的基本上下文,然后将其放在ContextWrapper中并覆盖Resource对象以对其进行主题化(Android实际上就是这样做)。

至于你为什么这样做而不仅仅是子类 - 以便不必制作两个,可能是非常重量级的对象。您也可以在两者之间共享变量,但这会增加内存泄漏的可能性。它也可能是对象的创建是昂贵的,但如果已经完成,你可以通过代理来避免这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.