扶凯

取势 明道 优术

Moose 1,381 views

作者为 扶 凯 发表

 Moose 简单介绍

        Moose 是 Perl 5 中一个完整的对象系统,就象任何现代的面向对象的语言一样( Perl5 绝对不是),它提供一些属性声明,对象构造,继承,和其它更多的关键字.这些关键字是语言的一部分,所以你不关心它们是如何实现.
        Moose 的目的是在 Perl 5 中实现,让 Perl 5 的面向对象做到同样的事情.实际上,这些关键字并不是我们创造的.它只是我们提示的 "糖",看起来和本身的关键字一样.在 Moose 中,你只要确认你的类的声明,不需要了解 blessed 这个 HASH 的引用,在存取的方法.你只需要专注于你类的逻辑结构,重点是"做什么",而不是"如何做".

       Moose 很大程度是基于在 Perl 6 的面向对象系统,以及从 CLOS,Smalltalk 和许多其他语言中借鉴最好的想法.

       Moose 是由Pugs 的开发人员Stevan Little 写的.

       Mouse 是 Moose 的简化版,没有提供扩展,只有 Moose 的 OO 核心功能,效率据说比 Moose 快了三四倍.如果你只用到 Moose 的 OO 核心功能,那么可以用Any::Moose 在两种实现间自动切换,另外 Any::Moose 还提供自动加载 MooseX::*扩展的功能,但由于没有现成的 MouseX::* 对应物,所以要么直接用 Moose,要么自己写一个 MouseX 扩展了.(本段 Dieken 提供)

Moose 的手册(译者斯文牛氓)

Moose Cookbook(译者扶凯)

Moose Roles

这个指南用于讲解 Moose roles.

Moose::Cookbook::Roles::Comparable_CodeReuse

示范 roles, 这个有时也叫做 traits 或者 mix-ins. Roles 提供的代码重用的方法与子类的方法是相互垂直的 (子类是上下,role 是左右)。

Moose::Cookbook::Roles::Restartable_AdvancedComposition

有时你只想在你的类中包含 role 中的一部分. 有时你想要整个 role 但是这个用在你的类中有一些方法冲突. 通过方法排除和别名, 你可以解决这些问题.

Moose::Cookbook::Roles::ApplicationToInstance

在这个文档中, 我们可以应用 role 到现有对象的实例中.

引用 @nightsailer 的话

  • 如果你是一个 Perl 的开发者, 现在还不知道 Moose 那么你对 Perl 的了解基本上还停留在10 年前了.
  • 虽然国内 Perl 的开发者寥寥无几, 但 Perl 的强大远远超越一般人的想象空间.
  • 我使用 Perl 是让自己更愉快,因为很多事情变得很简单.
  • Perl 的 OO 一般人很难理解, 但是却用了最简单和巧妙的方式实现了,想想, 一个 bless 搞定, 再看看
  • PHP 之类的,多么臃肿.
  • 有了 Moose,你会发现, 不仅仅 OO,AOP 这些东西实现起来是多么的轻松.

来了就留个评论吧! 3个评论



    樱宝宝 2012年11月12日 的 08:45

    看了楼主的的推荐……我决定还是重新去看看perl吧……至少作为兴趣,每次自己或者看见别人用perl的时候,都觉得高人一等啊……但是……那语法真心蛋疼啊……但是非常喜欢perl的哲学!!!看以前的代码??no……重写一个更加快一点……哇哈哈哈

    amy 2012年12月10日 的 10:59

    学习perl的很多资料都是从你的网站上看的,看了你对Moose的推荐,打算继续学习Moose。最近刚学完小骆驼,正不知接下来该学什么

    rock 2014年04月2日 的 02:40

    moose这一页上许多链接点进去都是 404Error