Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 多层UI的应用程序结构或设计模式是否有名称_Design Patterns_Architecture_Structure - Fatal编程技术网

Design patterns 多层UI的应用程序结构或设计模式是否有名称

Design patterns 多层UI的应用程序结构或设计模式是否有名称,design-patterns,architecture,structure,Design Patterns,Architecture,Structure,多层UI的应用程序结构或设计模式是否有名称 例如,假设我有一个使用多层的web应用程序: Layer0=背景图像 第1层=左按钮“” 所有图层大小相同,但透明度不同 Layer0的尺寸为100%,全黑, Layer1的尺寸为100%,但透明,带有一个“ 通过与屏幕交互,客户机将改变层的顺序,比如说javascript,层将改变位置以“显示”某些元素,甚至通过“显示”隐藏一些元素 因此,层的顺序可以是1,3,0,2,甚至可以有更多的层,其中包含静态内容,因此顺序可以是0,5,6,1,3,25,36

多层UI的应用程序结构或设计模式是否有名称

例如,假设我有一个使用多层
的web应用程序:

Layer0=背景图像

第1层=左按钮“”

所有图层大小相同,但透明度不同

Layer0的尺寸为100%,全黑, Layer1的尺寸为100%,但透明,带有一个“

通过与屏幕交互,客户机将改变层的顺序,比如说javascript,层将改变位置以“显示”某些元素,甚至通过“显示”隐藏一些元素

因此,层的顺序可以是1,3,0,2,甚至可以有更多的层,其中包含静态内容,因此顺序可以是0,5,6,1,3,25,36,19,10,8,9。。。等等

那么这些应用程序有名字吗?还是设计模式?还是应用程序结构

这是坏习惯吗?(好的,这可能是一个喜欢或不喜欢的问题)所以让我们将其更改为:

是否存在理论上效果最佳的最佳情况,或者是否存在这不是一个好主意的情况


谢谢

这是个好问题

在设计中使用层的整个想法是实现分离。然而,在ui框架中,层通常只是字面上的层,就像在什么上面画什么一样

听起来你想做的是有一种方法来动态地重新排列图层。是的,你可以考虑一些可能的设计模式。 主要的是责任链。如果你看一下四人组中关于这个模式的部分,他们实际上讨论了许多ui框架,包括NextStep,它有一个响应链的概念(现在是iOS和MacOS的主干)

一般来说,CoR是通过链的每个成员只持有对其后续成员的引用来实现的。所以,如果你想让人们对元素重新排序,那很可能是通过一个或多个拼接操作来完成的。因此,您可以很容易地定义这样一个操作,在两个现有层之间插入一个层:它必须将自己作为它要遵循的链接的后续层,然后将下一个项设置为它自己的后续层

另一种可能应用的设计模式是Decorator。有时,您希望在正在绘制的内容中添加一些内容,但仍然希望进行基本的绘制,例如,滚动通常是通过装饰器添加的,因为主面板可以保持不变,以及显示条的逻辑、图钉在哪里以及如何响应它们,与原始图形代码完全隔离


涵盖这两种情况的一般要点是:按责任划分组件

这是个好问题

在设计中使用层的整个想法是实现分离。然而,在ui框架中,层通常只是字面上的层,就像在什么上面画什么一样

听起来你想做的是有一种方法来动态地重新排列图层。是的,你可以考虑一些可能的设计模式。 主要的是责任链。如果你看一下四人组中关于这个模式的部分,他们实际上讨论了许多ui框架,包括NextStep,它有一个响应链的概念(现在是iOS和MacOS的主干)

一般来说,CoR是通过链的每个成员只持有对其后续成员的引用来实现的。所以,如果你想让人们对元素重新排序,那很可能是通过一个或多个拼接操作来完成的。因此,您可以很容易地定义这样一个操作,在两个现有层之间插入一个层:它必须将自己作为它要遵循的链接的后续层,然后将下一个项设置为它自己的后续层

另一种可能应用的设计模式是Decorator。有时,您希望在正在绘制的内容中添加一些内容,但仍然希望进行基本的绘制,例如,滚动通常是通过装饰器添加的,因为主面板可以保持不变,以及显示条的逻辑、图钉在哪里以及如何响应它们,与原始图形代码完全隔离


涵盖这两种情况的一般要点是:按责任划分组件

我喜欢你的答案,因为它提供了足够的信息,所以我可以在网上完成我的研究,非常感谢你!我喜欢你的答案,因为它提供了足够的信息,所以我可以在网上完成我的研究,非常感谢你!