返回顶部
首页 > 资讯 > 精选 >基于Flex界面的组合SDK有什么用
  • 668
分享到

基于Flex界面的组合SDK有什么用

2023-06-17 21:06:19 668人浏览 独家记忆
摘要

这篇文章给大家分享的是有关基于Flex界面的组合SDK有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Flex是Sun今后的重点产品,用以对抗Adobe的Flash和微软的Silverlight。这里将介绍

这篇文章给大家分享的是有关基于Flex界面的组合SDK有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Flex是Sun今后的重点产品,用以对抗Adobe的Flash和微软的Silverlight。这里将介绍基于Flex界面的组合SDK,可以说页面还是比较简洁的。

以下是界面类似我们正在开发的一个产品的主界面,前端展示采用Flex开发,后端系统是基于Java的SOA框架。界面左边是导航条,右边是内容区(当然还有其它栏目,在此忽略)。内容区一般由多个UI Part组成,每一个Part利用异步机制从后端获取数据,此外,它还将接收来自后端的通知消息。整个界面非常符合微软CAB思想,不过Flex没有CAB组建,但是可以采用Microsoft用户控件方式定义一块一块内容。界面内容区的UI Part可能会被重用。

基于Flex界面的组合SDK有什么用

在设计中,我想利用界面组合思想来设计,采用该思想的优点有:1)界面分割成不同的组成部分,每一部分实现一个功能,更加符合SRP原则;2)实现每一个UI Part时,只需专注复杂界面中的一块内容的实现,比较简单;3)容易实现重用;其缺点有:1)每一个界面由多个UI Part组成,需要维护UI Part之间的联系;2)新手不太容易看懂界面的实现。

鉴于微软界面组合诸多优点,我决定将其思想引入到Flex,自己实现一个Composition SDK based on Flex,该SDK实现过程中参考了CAB & SCSF和Prism。

考虑到该软件需要实现的功能,这个SDK将支持如下功能:

1 UI Part生命周期管理。每一个UI Part在显示的时候,需要从后端获取数据,然后监听数据更新消息,当点击界面的“Tab 2”时,Tab 1被隐藏并停止监听消息,Tab 2被显示。在我看来每一个UI Part具有Activated、Deactivated和Closed生命周期状态,当处于Activated状态时,UI Part显示呈现所需数据,当处于Deactivated状态时,UI Part被隐藏并停止更新数据,当处于Closed状态时,UI Part被关闭并停止更新数据,它将被销毁。生命周期管理功能提出的目的是为了实现生命周期变更驱动数据更新,也就是每一个组件数据更新是由其自身的生命周期状态决定的,不需要由父节点控制,从而实现更大粒度复用。

2 UI Part组合和动态注入。这个功能允许直接在视图容器类中定义每一个UI Part,在这种方式中,一旦容器被显示,则所有的UI Part将被显示;或者是其中某些UI Part是在运行时被动态注入并呈现的,当容器呈现时,根据需要注入特定的UI Part。

3 Master-Details UI Part支持。Master-Details UI Part是一对特殊的UI Part,当Master UI Part的数据发生变更后,Details UI Part也需要更新,和.net的Master-Details View是一样的。

4 采用Hook机制实现,使得在实现1~3功能的时候,可以尽量与标准控件兼容,不必创建自定义控件或者仅需创建非常简单的自定义控件。Hook机制原理如下:A)每一个功能由一个Hook实现;B)比如LifecycleHook,对于一个叶子节点的组件,当其被显示/隐藏/关闭时,该Hook要维护其状态;对于一个容器节点,它除了要维护自己的状态,还要维护子控件的状态,比如VBox容器,当VBox被显示时,其状态为Activated且其所有一级子节点状态也是Activated;而对于TabNavigator容器,当其被显示时,其状态为Activated且当前选中的Tab的状态也是Activated,其余Tab的状态都是Deactivated;C)Hook的创建过程是递归的监听界面根节点onChildAdded/Removed事件;D)SDK提供Hook注册表和Hook管理器,Hook注册表定义了每一类型的组件对应的Hook,而Hook管理器定义了每一个控件对应的Hook实例。

5 基于该SDK,每一个视图的设计由Workspace和UI Part组成,Workspace使用Flex标准容器控件定义了界面的布局;UI Part是界面每一部分功能的实现,自己封装了生命周期驱动的数据更新。

代码的设计比较简单,其结构如下:

基于Flex界面的组合SDK有什么用

ComponentTreeHook是整个Hook机制的核心类,它将递归监听根节点控件的onChildAdded/Removed,当有子节点添加时,递归挂载整个控件树,挂载过程代码如下:

             override public function hook(comp:UIComponent):void  {      if(!isHooked)      {           super.hook(comp);           hookComponentTree(component);       }   }      private function hookComponentTree(comp:UIComponent):void  {       doComponentTreeHooking(comp, true, hookComponentnode);   }                 private function doComponentTreeHooking(comp : UIComponent, hooked : Boolean, hookComponentFunc : Function) : void  {       if(!comp)       {           return;       }              // Hook the node from top to bottom.       var queue : Array = [ comp ];       var tempComp : UIComponent = null;       var tempContainer : Container = null;       var tempContainerChildren : Array;       while(queue.length > 0)       {           // Get a component from queue.           tempComp = queue.shift() as UIComponent;           if(!tempComp)           {               continue;           }                      // Do the hook for this component.           hookComponentFunc(tempComp);                      // Get the children of current component and push them to queue.           tempContainer = tempComp as Container;           // SmartPart here is treast as a Component.           if(tempContainer && !(tempContainer is ISmartPart))           {               if(hooked)               {                   tempContainer.addEventListener(ChildExistenceChangedEvent.CHILD_ADD, onChildAdded, false, CompositionEventPriority.CREATE_HOOK);                   tempContainer.addEventListener(ChildExistenceChangedEvent.CHILD_REMOVE, onChildRemoved, false, CompositionEventPriority.DESTORY_HOOK);               }               else              {                   tempContainer.removeEventListener(ChildExistenceChangedEvent.CHILD_ADD, onChildAdded);                   tempContainer.removeEventListener(ChildExistenceChangedEvent.CHILD_REMOVE, onChildRemoved);               }               tempContainerChildren = tempContainer.getChildren();               for each(var child : UIComponent in tempContainerChildren)               {                   queue.push(child);               }           }       }   }

感谢各位的阅读!关于“基于Flex界面的组合SDK有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 基于Flex界面的组合SDK有什么用

本文链接: https://lsjlt.com/news/293512.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 基于Flex界面的组合SDK有什么用
    这篇文章给大家分享的是有关基于Flex界面的组合SDK有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Flex是Sun今后的重点产品,用以对抗Adobe的Flash和微软的Silverlight。这里将介绍...
    99+
    2023-06-17
  • 基于图文界面的蓝牙扫描工具btscanner有什么用
    这篇文章主要为大家展示了“基于图文界面的蓝牙扫描工具btscanner有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于图文界面的蓝牙扫描工具btscanner有什么用”这篇文章吧。基于...
    99+
    2023-06-04
  • 基于vue+canvas的excel-like组件有什么用
    这篇文章给大家分享的是有关基于vue+canvas的excel-like组件有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。a vue component,基于vue的表格...
    99+
    2024-04-02
  • Linux中基于图形界面的下载工具是什么
    Linux中基于图形界面的下载工具是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在Linux系统中想要进行下载可以选择多种方法,可以采用命令行的方式,比如...
    99+
    2023-06-28
  • Vue基于NUXT的SSR有什么用
    这篇文章主要介绍Vue基于NUXT的SSR有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!SSR首先说下 SSR,最近很热的词,意为 Server Side Rendering...
    99+
    2024-04-02
  • C语言基于EasyX库怎么实现有图形界面钟表
    这篇文章主要介绍“C语言基于EasyX库怎么实现有图形界面钟表”,在日常操作中,相信很多人在C语言基于EasyX库怎么实现有图形界面钟表问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言基于EasyX库怎么...
    99+
    2023-06-29
  • C语言基于EasyX库怎么实现有图形界面时钟
    今天小编给大家分享一下C语言基于EasyX库怎么实现有图形界面时钟的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.目标要求...
    99+
    2023-06-29
  • 基于Eclipse的Flex代码格式化插件怎么用
    小编给大家分享一下基于Eclipse的Flex代码格式化插件怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Flex代码格式化工具在对Flex进行编码的时候,...
    99+
    2023-06-17
  • mysql组合外键有什么用
    MySQL组合外键的作用是用于约束多个表之间的关系,确保数据的完整性和一致性。通过组合外键,可以定义多个列外键,来建立表与表之间的关...
    99+
    2023-10-28
    mysql
  • mysql组合索引有什么用
    组合索引通过结合多个列创建索引,加速对查询的访问,尤其是在涉及这些列时。首先选择要组合的列,然后使用 create index 语句指定这些列的顺序创建索引。组合索引的优势包括更快的查询...
    99+
    2024-06-02
    mysql 排列
  • CSS中的flex布局有什么用
    这篇文章给大家分享的是有关CSS中的flex布局有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。flex布局又称为弹性布局,任何一个容器都可以指定为flex布局声明弹性盒子的几种方式就像前面说的,所有容器都...
    99+
    2023-06-08
  • Android基于ViewPager实现的应用欢迎界面完整实例
    本文实例讲述了Android基于ViewPager实现的应用欢迎界面。分享给大家供大家参考,具体如下: 有时候开发一个应用需要指导用户提示一些新功能,这样的欢迎界面的实现可以用...
    99+
    2022-06-06
    界面 viewpager Android
  • 基于Python的GUI图形用户界面编程详细讲解
    目录前言    常用的GUI库1.Tkinter2.wxPython3.PyQT基于tkinter模块创建GUI程序步骤主窗口设置主窗口位置和大小GUI...
    99+
    2022-12-29
    python的图形界面gui编程 python开发gui界面 Python gui界面
  • Bootstrap中的面板组件有什么用
    这篇文章将为大家详细讲解有关Bootstrap中的面板组件有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。面板组件主要作用是用来处理一些其他组件无法完成的功能,在不同的版本中具有不同的源码:LESS...
    99+
    2023-06-06
  • 基于Yar的WordPress微博墙插件有什么用
    这篇文章主要介绍了基于Yar的WordPress微博墙插件有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。基于Yar的WordPress微博墙插件在现在移动互联网时代,...
    99+
    2023-06-20
  • 条件与循环的组合运用,打造动态响应式界面!
    条件分支:根据条件选择代码块 条件分支允许根据某个条件选择要执行的代码块。常见的条件结构包括 if-else 和 switch-case 语句: if-else 语句:基于布尔表达式执行特定操作,否则执行替代操作。 switch-cas...
    99+
    2024-04-02
  • 又有新概念?可组合基础设施是什么意思?
      可组合基础设施,将计算、存储和网络设备视为一个资源池,这个资源池根据不同工作负载对最佳性能的要求按需提供。这是一种新兴的基础设施,旨在优化IT资源和提高业务灵活性。  这种方法与公有云相似,从共享的IT资源中响应请求——区别在于可组合基...
    99+
    2023-06-04
  • 关于JVM的基础知识有什么呢
    这期内容当中小编将会给大家带来有关关于JVM的基础知识有什么呢,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。虚拟机给人的感觉像是操作系统、编译器:非常高大上。但是Java程序就跑在上面,遇到问题还得去排查...
    99+
    2023-06-02
  • 基于ARP的网络扫描工具netdiscover有什么用
    小编给大家分享一下基于ARP的网络扫描工具netdiscover有什么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!基于ARP的网络扫描工具netdiscoverARP是将IP地址转化物理地址的网络协议。通过该协议,可以...
    99+
    2023-06-04
  • C++轻量级界面开发框架ImGUI有什么用
    这篇文章给大家分享的是有关C++轻量级界面开发框架ImGUI有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ImGUI简介  ImGUI主要用于游戏行业,所有的控件都需要手绘实现,当然性能也是满满的,毕竟是...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作