`

parsley最佳实践

阅读更多

    上篇博文提道:“目前,Flex框架大致可分为两大类,一类是正规军MVC--Cairngorm&pureMVC,一类是自由军MVC兼IOC--swiz、mate、parsley、spring as。正规军的MVC是在既定模式下运作整个流程,而这个模式的形成是以解耦为原则的职责划分,优点自然是权责清晰,而其不足在于过于正规化使得工作量或效率被转嫁,一个看似小小的需求,也要动辄整个流程,使得小需求付出过多(即程序员编码量过大)。”

    我们知道,事物均具有双重性,因此,根据事物的双重性,我们再来分析一下第二类框架--自由军的MVC不强制划分职责,但提供了事件或消息的通信机制保障期间的沟通,当然,这些分工可以根据项目团体来自行负责建设。因此,自由也是有代价的,但这种代价换来无尽的灵活性从某些方面来讲也是值得的。相信自Spring问世以来,大家对IOC的概念以及其带来好处都并不陌生,是啊,IOC也是一种很好的“好莱坞”式解耦思想啊。因此,融入IOC的支持也是这类自由军框架的另一优点。接下来,我们简单认识一下Flex自由军框架parsley的最佳实践。

    最佳实践一、关于注入

    ①前提:针对接口编程,采用类型注入方式,保证接口实现惟一;结论:AS3 metadata tag注入依赖DI & parsley MXML配置IOC容器托管对象;较为官方推崇!

    ②前提:无法满足①的前提保证接口实现惟一,需采用id注入方式;结论:依赖DI与parsley IOC容器托管对象均通过MXML配置完成!

 

    最佳实践二、关于配置

    采用AS3 metadata tag & parsley MXML。

 

    我们知道,对于parsley IOC容器提供的DI,支持以下几种方式:
    1、AS3 Metadata tags;
    2、MXML
      2.1、普通MXML;
      2.2、Parsley MXML;
    3、XML;
    4、混合模式(以上几种配置的混用)。
    需要注意的是,MXML配置方式仅适用于Flex,而不适用于Flash;

    既然有这么多种配置方式,那么为何要执行最佳实践呢?原因在于这几种配置的优劣势对比,详情如下:

普通MXML、parsley MXML与XML对比:
普通MXML优势
:①简单直观;②无需了解parsley配置标签;③编译器检测属性值类型;
parsley MXML优势
①允许构造器注入(即支持标签[InjectConstructor]);
②允许将对象指定为lazy加载模式(<Object lazy="true" type="..."/>,默认为false);
③允许配置对象为DynamicObject/non-singleton:相比于<Object>标签,<DynamicObject>标签为每次请求创建一个新的对象实例。
XML优势:①经常变动配置而避免重复编译;②无编程知识人员编辑配置文件或不使用Flex;
XML编译警惕:与配置在MXML中的类相比,配置在XML中的类,若没有显式在代码中使用或引用,它们将不被编译到SWC或SWF中。解决之道有3,①显式在代码中引用类(比较丑陋);②编译成SWC类库(If you want to use these classes as a library, compile them into an SWC (with compc you can include whole source folders into the SWC) and then include the whole SWC into your SWF with the -include-libraries option of the mxmlc compiler.);③以参数的方式告诉编译器(You can alternatively include individual classes with the -includes option of the mxmlc compiler.)。
MXML与XML配置在写法上的异同性
MXML 和 XML 配置几乎是一样的,细小的不同是标记的不同,MXML支持驼峰式书写方式,而XML支持带关联线"-"的小写方式(capitalized camel-case vs. lower case names with dashes).样例参见《parsley2.2指南-DI/IOC依赖注入-配置文件中声明依赖》

AS3 Metadata tags继承性(从mxmlc编译器使用的规则看):
1、类级别的metadata tag永远不会被继承到其子类;
2、属性或方法级别的metadata tag,若不被其子类覆盖写,则可被继承到子类(即在其子类依旧可用);若被子类覆盖写,只有当其覆盖写的方法或属性自身没有任何metadata tag修饰时,则可被继承到子类。
3、关于[ProcessSuperclass][ProcessInterfaces]
出于性能的考虑(Flash player反射速度相当慢),一般情况下,任何类级别的metadata tag被其子类忽略,但是,这也许不是某些场合/情况所期待结果,比如类拥有很多冗长的[ManageEvents]期待继承到子类中,对于这些特殊需求,框架提供了可选的显式标签,[ProcessSuperclass][ProcessInterfaces]分别用于子类或接口的特定实现类;需要注意的是:
①传递性
[ProcessSuperclass]将被传递到所有其子类以及子类的子类;[ProcessInterfaces]将被传递到所有其实现类;
②不可覆盖性
无法覆盖写这两个标识使其终结传递性;
如:
[ProcessSuperclass][ProcessInterfaces]
public class SomeClass {

   

    当然,最佳实践只是一种约定,不是强制!

 

   

    

0
0
分享到:
评论

相关推荐

    parsley-flash api

    10. **最佳实践**:使用Parsley Flash API,开发者能够遵循最佳实践,如单一职责原则(SRP)、开闭原则(OCP)等,从而提高代码质量并减少维护成本。 综上所述,Parsley Flash API是Flash开发者实现高效、模块化和...

    ParsleyTest Flex框架parsley的使用入门

    通过分析这些示例,你可以更深入地理解Parsley框架的工作原理和最佳实践。 在学习过程中,建议先查看项目结构,了解每个文件的作用。然后逐步分析配置文件,看它是如何定义服务、选择器和消息的。接着,研究源码中...

    Flex Cairngorm Parsley Demo 源码

    9. **最佳实践**:通过示例学习最佳的代码组织和命名约定,提升代码质量。 10. **性能优化**:理解Cairngorm和Parsley如何协同工作以提高应用程序的性能和响应速度。 通过深入研究这个Demo,开发者不仅可以掌握...

    Parsley Framework 和 Tips for Flex 的 PPT

    通过这两份PPT,你不仅可以提升在Flex和Parsley上的专业技能,还能培养出更好的软件设计原则和最佳实践。 在实际项目中,Parsley和Flex的结合使用可以帮助你构建出可扩展性强、易于维护的RIA。而掌握这些技巧和知识...

    parsley doc and src

    3. **设计模式**:源码中可能会包含多种设计模式,如工厂模式、观察者模式、单例模式等,这些模式是软件工程中的最佳实践,学习它们能提高代码质量和可维护性。 4. **编程语言特性和库的使用**:Parsley可能是用...

    parsley-flex api

    - 开发者可以通过官方文档、示例代码和社区论坛来学习Parsley-Flex API,逐步掌握其设计理念和最佳实践。 - 工具支持也是关键,Parsley-Flex 可能有配套的IDE插件或构建工具,以提升开发效率。 5. **集成与迁移**...

    Parsley+SpiceLib 2.4 Developer Manual

    4. **最佳实践**:提供一系列最佳实践建议,帮助开发者遵循良好的编程习惯,以优化代码质量和性能。 5. **错误处理和调试**:讲解如何在遇到问题时进行调试,以及Parsley和SpiceLib提供的错误处理机制。 6. **性能...

    Some technical documents of Parsley.

    综上所述,这个压缩包文件的内容可能涵盖如何在Flex 4项目中采用Parsley框架构建模块化应用,涉及源码分析、具体实现步骤以及最佳实践。通过学习这些资料,开发者能够更好地掌握Parsley的高级特性,提高Flex应用的...

    Parsley-Core:FlexFlashAIR的核心API和Parsley IOC容器的实现

    虽然Parsley-Core不再维护,但其最终版本的手册是宝贵的参考资料,包含了详细的功能说明、教程和最佳实践,可以帮助开发者理解和应用Parsley-Core到他们的项目中。 综上所述,Parsley-Core是一个强大的工具,它的...

    Flex IOC 框架概览PDF完整版及配套源码

    6. **优势与最佳实践**:讨论了使用Flex IOC框架的优点,如提高可维护性、减少代码重复和促进单元测试,并给出了一些最佳实践指导。 "Flex IOC 框架概览配套源码"可能是为了辅助理解上述理论知识而提供的实际项目...

    Wiley.Adobe.Flash.Builder.4.and.Flex.4.Bible.Apr.2010.rar

    总之,《Wiley Adobe Flash Builder 4 and Flex 4 Bible》涵盖了Flash Builder 4 IDE的使用技巧、Flex 4框架的核心技术和RIA开发的最佳实践,无论你是初学者还是有经验的开发者,都能从中受益匪浅。通过学习这本书,...

    flex包用于开发

    9. **Flex示例和教程**:对于初学者,压缩包可能包含了一些示例项目和教程,这些资源可以帮助开发者快速上手,理解Flex的基本概念和最佳实践。 总的来说,这个"flex包"是为了简化Flex开发流程而准备的,它提供了...

    AS3新手框架开发研究

    10. **最佳实践与调试** - **代码规范**:遵循良好的编码习惯,如命名约定、注释和文档编写。 - **使用IDE**:如Flash Builder或IntelliJ IDEA的Flash插件,提供代码提示和调试功能。 - **性能优化**:减少不必要...

    JQuery表单验证

    8. **最佳实践** - 总是进行服务器端验证,因为客户端验证可被禁用或绕过。 - 提供清晰的错误消息,帮助用户理解如何修正错误。 - 使用适当的验证规则,避免过于严格或过于宽松。 - 避免过多依赖JavaScript,...

    摄影测量matlab编程作业(灰度值矩阵相关)

    对于“摄影测量编程作业汇总合集”这个压缩包,它可能包含了上述各种练习的源代码和解释,通过学习和实践这些例子,可以深入掌握MATLAB在摄影测量中的应用。 在实际项目中,摄影测量matlab编程不仅限于以上所述,还...

Global site tag (gtag.js) - Google Analytics