- 浏览: 7339137 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
了解依赖注入
众所周知,面向对象设计能很好得控制类的功能(对于开发人员,你需要灵活得使用这个原则,我这里只是大致阐述下概念)。为了遵循这条原则,对象就要通过使用合作对象来完成自己的使命。但是这些合作对象从哪儿来呢?通常,没有依赖注入,你就需要在你的组件中实例化这些合作对象。对象之间的高耦合度使得你的应用很难维护,也不便于独立地测试组件。依赖注入是一个非常粗略的概念。当你使用容器或框架专门用来把合作对象“注入”给需要他们的各个对象后(详细请参见更正式的定义),它最终就演变成一个强大的模式。你可以独立开发和测试你的对象,然后把他们捆绑在一起来构建你的应用。在Java开发中,Spring框架就是个常见的依赖注入框架。
我将使用Spring框架的一部分,Spring-MVC为例。在Spring-MVC模式中,你有一个Controller对象用来处理来自客户端的访问请求。现今很多web应用,大多是后面有个数据库,应用就通过它提供的数据呈现给用户。假设用户根据作者查询书籍。最简单的方式是,Controller对象接收请求,把作者名字从request参数中挑出,再把条件传给BookService对象,等待返回的书名列表。最后把书名列表反馈给用户。Spring框架在中间所做的处理就是把BookService对象注入到Controller中(通过XML或注释进行配置,超出本文话题)。BookService对象对Java接口的实现意味着service的实现对Controller对象是不可见的。这样很好。只要参数和方法的返回类型不变,Controller对象就不需要了解service是如何工作的。但在Flex开发中需要怎么做?
在ActionScript 3.0接口中实现依赖注入
构造接口给依赖注入提供了活力。用一捆相互依靠才能工作的对象,而不是用某个特定的对象来实现,这就意味着,如果其中一个对象修改了,那么其它所有依赖它的对象都需要进行修改,但这些对象只需要改变相应接口的实现即可。所以实现的修改就变得无缝,测试也很方便。设想一些:既然ActionScript 3.0可以构造同样的接口,那么书写低耦合的代码就很方便。
和在Java里使用接口的方式一样:
1. 定义你的接口。ActionScript 3.0的接口类似:
package com.example { public interface Controller { public void search(searchParams:Object, callback:Function=null); } }
2.定义一个实现了该接口的类。
package com.example { public class HttpController implements Controller{ private var _httpService:HTTPService= new HTTPService(); public void search(reqParams:Object, callback:Function=null){ details omitted for clarity } } }
在上面的例子里,有一个名为Controller接口和名为HttpController的实现。当执行search的时候,HttpController用来和你应用的后端交互。它使用Flex对象HTTPService,处理search请求和返回的内容。你可以看到HttpController里实例化了HTTPService。所以为什么不能注入HTTPService对象呢?无缝接口可以随时满足你应用的需求。这种情况下,如果你需要另一个查找机制,就可以写一个简单的实例或修改已有的。
FLEX风格的依赖注入
你已经了解了依赖注入和它对一个好的应用设计的重要性。但如何运用在Flex应用里呢?举个例子,比如你创建了一个组件来接收和处理用户输入信息和查询结果的呈现。这个组件肯定是某种容器。所以要扩展Panel类,实现控制不同的对象来完成你的查询功能。另外,组件的行为完全用ActionScript类定义(在MXML里定义<script></script>标签)。扩展Panel对象的ActionScript文件大致如下例:
public class SearchPanel extends Panel { private _searchController:Controller; public function search(text:String):void { this._searchController.search(text, this.callBackFunction); } public function set searchController(searchController:Controller):void { this._searchController = searchController; } public function get searchController():Conroller { return this._searchController; } }
上述例子的一大特点是实例变量,Controller类型的_searchController和其getter和setter方法。名字和_searchController变量去掉“_”的一样。接着,给用来做呈现的MXML组件起名为SearchPanelView.mxml(接着的细节省略...)
<?xml version="1.0" encoding="utf-8"?> <SearchPanel xmlns="bbejeck.example.*" xmlns:comp="bbejeck.example.*"xmlns:mx="http://www.adobe.com/2006/mxml"> <comp:HttpController id="searchController" /> </SearchPanel>
对于上面的MXML,有如下几个要点:
- <comp:HttpController id="searchController" />定义了为SearchPanel所用的controller组件。注意其中定义的类名为HttpController,_searchController实例变量仅为了让它是Controller类型,实现了什么无关紧要。
- id属性要同SearchPanel这个ActionScript类里的getter和setter方法名一致。
- 当Flex应用加载完SearchPanelView.mxml后,“HttpController”就被实例化了,id属性与SearchPanel类里setter方法名匹配的组件Controller实例就被注入到SearchPanel类里面了。
- 当你想要修改你的search功能,你可以修改HttpController对象,或定义一个新的实现类并修改SearchPanelView.mxml文件,无论哪种方法你都完全不需要修改SearchPanel的代码。
总结
你已经知道如何在Flex里使用依赖注入了。Flex应用会把MXML里的id和周围setter里方法名匹配的注入到组件中。我们有必要使用Flex获取基本的依赖注入容器。
我们可以得出结论:
- 当构建应用的时候,不能只考虑构建应用自身,还需要考虑建立应用时需要哪些独立组件,他们的功能是什么。为了构建应用,你准备的组件还需要实现callback和service对象。代码重用很重要,以后你再建立新应用时就快很多了。
- 简化单元测试。现在,如果你的组件拥有基于接口的合作者,那在测试这些组件时,你就可以手工地请求适当的setter方法并把仅实现接口的假对象作为测试用例。
发表评论
-
flex 中As3Commons的使用學習
2009-10-15 12:53 3726學習Java的人,知道java中反射的强大, ... -
flex的国家化的应用
2009-09-23 08:59 2091在项目中需要使用发送短信模板的功能的,根据主题不同,模板不同, ... -
flex的沙箱问题
2009-09-14 17:14 5451在flex与google的地图整合中发现,点击了goog ... -
Flex 常用技巧
2009-09-04 13:00 2580flex是一种异步请求的技术,如果要实现同步必须在传递函 ... -
Flex 開發Google地圖
2009-08-24 13:16 24501 .获取googe的key 2.下载google的fle ... -
查询之order by,group by和having的使用
2009-08-08 15:48 4723在项目中查询常驻酒店的中住的次数最多的前10个酒店: 代码如 ... -
objectProxy的监控对象应用
2009-08-08 13:46 2679在项目中查询根据一个字段发生实现需要特殊的功能,作出相应的动作 ... -
Flex 与外部的数据通信(HTTPService,URLLoader和URLRequest)
2009-08-08 13:36 7435ActionScript 3.0中提供的数据加载请求类主要是H ... -
flex 数据绑定
2009-08-08 13:31 24089.2.1 函数和类级别的绑定 [Bindable]标签打使 ... -
Flex中Entity对象与Display对象之间的数据双向动态绑定
2009-08-08 13:27 2455flex项目中对象的和组 ... -
学习ActionScript 3.0的新特点
2009-08-06 13:05 2012ActionScript3.0 是一种类型 ... -
理解 Flex itemRenderer - 第 1 部分: 内联渲染器
2009-08-05 16:37 3136Flex 提供许多控制, 它们可以按不同方式显示大量数据。Li ... -
flex 中类似Google的提示下拉菜单实现
2009-08-01 16:28 5415项目中使用类似Gooogle输入提示菜单的实现如下 ... -
针对Flex中组件的扩展的应用开发
2009-08-01 16:04 2868在项目中使用一个自定义的CheckboxGroup组件继承自C ... -
Flex类似Google搜索提示的两种做法思路
2009-08-01 15:52 2681做了个简单的搜索提示 ... -
Flex中直接获取某个组件的对象
2009-08-01 15:47 2455Flex中直接获取某个组件的对象方案1: 遍历这些butto ... -
flex 查看类的各种数据的权限
2009-08-01 15:18 1871查看类的一些属性的信息:可读,可写,可读可写。 ... -
flex中getDefinitionByName 函数的使用
2009-08-01 12:40 6742在项目中自定义一个CheckboxGroup,这个控件里面 ... -
Flex 学习中数据类型必须注意的几点
2009-08-01 12:36 2258在字符串转换为int类型必须使用 最好如下: var a:i ... -
flex BindUtils的扩展的样式表绑定工具类StyleBindingUtils
2009-07-30 13:06 2223项目中使用的样式表绑定类如下: package uti ...
相关推荐
### 依赖注入在ArcGIS Server Flex中的应用 #### 一、理解依赖注入的概念与价值 依赖注入(Dependency Injection,简称DI)是一种设计模式,旨在减少类间的耦合度,提高软件系统的灵活性和可测试性。在传统的编程...
Parsley是ActionScript 3.0的一个强大依赖注入(DI)和控制反转(IoC)框架,它为Flex和Adobe AIR应用程序提供了灵活的架构支持。这个名为"ParsleyTest"的压缩包文件包含了关于如何开始使用Parsley框架的源码示例,...
Spring Flex 提供了全面的支持,使得 Flex 应用程序能够充分利用 Spring 框架的强大功能,包括依赖注入、服务代理、事务管理以及安全控制等。 Flex 是一个用于构建动态、交互性丰富的 Web 应用程序的开源框架,基于...
5. **数据绑定和依赖注入**:Flex 4 提供了强大的数据绑定功能,简化了模型与视图之间的数据同步。同时,通过依赖注入框架,如 Cairngorm 或 Mate,可以实现模块化的代码组织,提高代码的可维护性。 6. **事件处理*...
FLEX MATE框架作为一款强大的工具,为Flex开发者提供了灵活、高效的组件管理和依赖注入解决方案。本文将深入探讨FLEX MATE框架的核心概念、设计模式以及源代码中的关键部分,旨在帮助读者更深入地理解和运用这个框架...
然而,为了更好地利用这个项目,开发者需要熟悉Flex编程、MXML和ActionScript,理解Hibernate的对象关系映射概念,以及Spring的依赖注入和AOP机制。同时,掌握Java Web开发的基本知识,包括Servlet和JSP,也是非常...
4. **库文件**:描述中提到的"必备的lib"可能包含Flex SDK的库,Spring BlazeDS库(用于Flex和Spring之间的通信),以及其他第三方库,如 Parsley 或 Mate(用于依赖注入和事件驱动架构在Flex中的实现)。...
- **Spring框架**: 提供企业级应用所需的依赖注入、事务管理等功能。 - **iBATIS**: 数据访问层框架,简化数据库操作。 - **Cairngorm和pureMVC**: MVC架构模式实现,帮助组织和管理Flex应用的业务逻辑。 通过本...
这个例子旨在展示如何在Flex前端与Spring后端之间建立通信,以便利用Spring框架的强大功能,如依赖注入、事务管理等。 首先,Flex是一个基于ActionScript和Flash Player的开源框架,用于创建交互式的、基于Web的富...
Flex4和Spring是两个在开发领域中非常重要的技术框架,它们分别用于构建富互联网应用程序(RIA)和企业级Java应用的依赖注入与控制反转。在本整合实例中,我们将探讨如何将Adobe Flex4与Spring框架无缝集成,以实现...
总的来说,Flex Mate框架通过提供强大的依赖注入和事件驱动架构,极大地提升了Flex应用的开发效率和质量。熟悉并掌握Mate的使用,对于任何Flex开发者来说,都将是一个宝贵的技能,能够帮助他们构建更高效、更可维护...
3. **Spring**:Spring是一个广泛使用的Java企业级应用开发框架,提供了依赖注入(DI)和面向切面编程(AOP)等核心特性,简化了Java应用的开发和维护。在FlexDemo中,Spring可能用于管理后端服务,如业务逻辑和数据...
Spring则是一个广泛使用的Java企业级应用开发框架,提供了依赖注入、面向切面编程等功能,是后端服务的核心。BlazeDS是Adobe提供的一个服务器端数据推送技术,它允许Flex应用与Java应用服务器进行实时通信。 描述中...
而Spring框架则是Java平台上的一款轻量级、全面的企业级应用开发框架,主要用于简化Java EE开发,提供依赖注入、AOP(面向切面编程)以及众多其他功能。 FlexSpring的集成允许开发者充分利用Flex的可视化设计和强大...
在默认情况下,BlazeDS会为每个远程对象请求创建一个服务器端Java对象的实例,但这与Spring的依赖注入不兼容,因为Spring的bean是由其容器创建和管理的。因此,整合Spring和BlazeDS使得Flex可以直接使用由Spring管理...
Parsley是Spring ActionScript项目的一部分,是一个更强大的依赖注入(DI)和面向切面编程(AOP)框架。它简化了组件间的通信,通过自动注入依赖关系,使得代码更加简洁和易于测试。Parsley还提供了拦截器、事件调度...
(4) **框架支持**:Cairngorm和Pure MVC等Flex开发框架提高了开发效率和代码复用性,Spring ActionScript框架更是为Java程序员提供了类似Spring的开发体验,如依赖注入功能。 (5) **成熟的技术生态**:自Flex 1.0...
Spring框架以其灵活的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力,简化了服务端的开发工作。Flex则通过HTTP、AMF(Action Message Format)等协议与Spring服务...
标题中的“Parsley LOC框架”指的是Parsley框架,这是一个专门为Adobe Flex和ActionScript开发者设计的开源依赖注入(Dependency Injection)和应用架构框架。它增强了Flex和Flash应用程序的可维护性和可扩展性,...