面向对象 Perl
为什么编写可声明的内容?Moose 为您提供清晰的对象语法,在需要时提供强大的功能。
Perl 现在已经具备十五年的面向对象 (OO) 功能,并且今天它拥有 Moose。Moose 帮助开发人员专注于任何项目背后的底层逻辑和需求;鼓励代码重用、简化(使测试更容易)并促进最佳实践。
使用 Moose,编写构造函数、析构函数和访问器的时间已经一去不复返了。Moose 为指定类提供了一个简单、声明式的语法。大多数属性验证代码都会消失。Moose 在指定数据类型后会自动处理它。
角色允许轻松重用独立于类数据的行为。Moose 被构建为与 Perl 一样灵活,可以根据项目的需要进行更改——请参阅 CPAN 上不断增长的 MooseX 命名空间。MooseX 模块的一个示例是 MooseX::NonMoose,旨在使现有代码库的迁移变得更容易。最棒的是,Moose 的用户界面就是 Perl™,因此开发人员无需学习新的语法。
Moose 中的属性简单明了。程序员使用命名参数(与许多其他 Perl 库类似)通过简单的函数调用来声明它们。此声明可以指定属性是否可写、它接受哪种类型的值、属性的默认值、自定义构建器/清理器方法等。给定属性的类型信息,Moose 将选择尝试将值转换为该类型,或在无法转换时引发异常。此检查允许程序员专注于编写其逻辑,而无需陷入值检查的细节中。
正如属性改变了 Moose 类数据处理方式一样,角色改变了类行为的编写方式。角色是可以添加至类或对象的可重用方法集合。通过角色,人们可以为一组类编写行为,而无需了解或关心这些类管理的数据。角色可以要求在使用它们的类中存在方法,并且可以通过这种方式像 Java 和 C# 等更传统的面向对象语言中的接口一样发挥作用。与属性一样,在未满足这些条件时将引发异常,从而为向类添加行为提供一种结构化机制。
Moose 深谙其他 Perl 项目的开放开发模式,拥有越来越多的提交者和越来越多的测试,截至撰写本文时已超过四千个。
Chris Nehren