【问题标题】:is Context in Android an implementation of a complex Strategy design pattern?Android中的上下文是复杂策略设计模式的实现吗?
【发布时间】:2019-01-05 13:00:39
【问题描述】:

我正在阅读几本指南和一本关于 Strategy 模式的书。我注意到在所有指南中都有一个对 Contextclass 的引用,它决定了某些特定行为的优先委派而不是实现。
当我在android中管理类,对象Context时,我想知道SDK工程师是否将AndroidContext作为策略模式的具体(复杂)实现。

【问题讨论】:

    标签: android design-patterns kotlin android-context strategy-pattern


    【解决方案1】:

    作为Wikipedia says,策略设计模式允许在运行时选择算法(存在多种可能的实现)。 Context 类不封装任何单一算法。对于它允许访问的服务,在运行时没有选择多个可能的实现;操作系统只提供了一个实现。

    因此,不,Context 类与 Strategy 模式没有任何共同之处。

    【讨论】:

    • 所以在运行时选择一个算法,因为composition is better than inheritance 咒语,我想这证明 Kotlin 在 Kotlin 中带有一个内置的 lazy by delegate 命令是合理的。你说Context 没有封装一些算法,这表明我封装是为了改变什么,这应该是一个不可告人的证据,证明我们超出了Strategy 模式的应用范围!非常感谢您的回复,已接受 && 点赞
    【解决方案2】:

    设计模式代表了经验丰富的面向对象软件开发人员使用的最佳实践。相信像 Android 这样的平台是不适用的,这太天真了。例如,设计 Android 上下文时的设计模式是处理不同的屏幕尺寸。上下文具有基于策略设计模式的指令来处理如此多的不同屏幕尺寸。 我发现这是最简单、最有用的设计模式教程,其中包含使用上下文类的示例。

    https://www.tutorialspoint.com/design_pattern/index.htm
    

    【讨论】:

    • 是的,你提到的来源是我研究过的其中之一,关于不同屏幕尺寸的有趣回复,我要给你投票,谢谢
    【解决方案3】:

    基本上,Contextreference,包含有关“应用程序环境”的全局信息。

    这是一个抽象类,其实现由Android系统提供。

    它允许访问特定于应用程序的资源和类,以及向上调用应用程序级操作,例如启动活动、广播和接收意图等。

    简而言之,它是关于应用程序内部运行的事物的参考(您可以假设它是指向要在应用程序环境中使用的应用程序进程注册表的全局指针,*在我看来)

    您可以查看更多here

    【讨论】:

    • 好的,谢谢,很高兴知道,但我不希望有官方指南的链接,但是对我的 OP 问题 a) yes/no is a strategy patternb) why? 的明确答复我猜你是在含蓄地说不是,是不是策略模式,而是一个简单的抽象类,对吗?
    • 是的,据我所知,它绑定到特定的应用程序。所以,是的,它是策略模式,但它作为简单抽象类的实现也是如此。因为,几乎所有 SDK 组件 都是此类的直接或间接子级。
    • 好的,非常感谢您的解释,我将等待回复,以便接受更接近我的问题的回复
    猜你喜欢
    • 2018-08-07
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2013-10-06
    相关资源
    最近更新 更多