gpt4 book ai didi

design-patterns - OOP/模式 : Customizing layout based on environment

转载 作者:行者123 更新时间:2023-12-04 06:46:37 25 4
gpt4 key购买 nike

我有一个应用程序,根据查看它的位置而有细微的差异。

业务逻辑和 View 样式的变化很好 - 这一切都分别通过依赖注入(inject)和 CSS 处理。

但是,我要解决的问题是 View 布局/元素的细微变化。

例如 - 如果用户在店内信息亭中运行我们的应用程序,我们使用的导航选项与他们在桌面环境中或通过 Web 浏览器运行时略有不同。我们可以选择隐藏按钮或导航栏。

目前,我正在做类似的事情:

[Inject]
public var environment:Environment;

public function get labelVisible():Boolean
{
switch (environment.channel)
{
case Environment.KIOSK :
return false;
case Envirnoment.WEB :
case Envirnoment.DESKTOP :
return true;
}
}

但是,我担心 Environment 类到处泄漏。

我不想过度设计某些东西,但我想知道是否有一种合适的设计模式我在这里遗漏了这将使我无法长时间 switch...caseif...then到处都是。

最佳答案

如果您根据接口(interface)设计 View ,则可以处理实现中的这些差异。例如,假设 labelVisible方法位于名为 LabelView 的 View 中.它会有一个方法labelVisible()然后你可能有一个 KioskLabelView , WebLabelViewDesktopLabelView .将根据环境注入(inject)正确的 View 类。因为差异是微妙的,我怀疑您的大多数 View 类将在抽象实现中实现,而仅将这些细微的细节留给子类实现。

关于design-patterns - OOP/模式 : Customizing layout based on environment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3680189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com