..


赞助商链接

在Ruby中使用的混入

写文章的阿莱西奥Saltarini
第1 2

有时你要创建的对象中有“本”功能类,但也“这个”和“这等”,这也许是在其他地方已经被写入我们的源代码。

换句话说,我们要创建一个类,借用方法和源代码的其他部分,或在某些库中定义的属性。

相反,我们将聚集在相同的功能在一个地方接触到我们所有的源代码。 如何?

纯粹主义者震惊的是面向对象编程和支持 - 在我看来完全不是没有理由 - 即每一个这种类型的需要,可以与多态的正确使用解决。

其他人,特别是如果他们从经验中得出类似的语言C + +,认为因为这些使用多重继承要求,准确。

像Ruby务实的语言,但是,通过提供所谓的“混入”的技术,名称的问题 - 它的声音! - 一个冰淇淋男子给了她各种口味的冰淇淋组成的Massuchussets(奶油,巧克力... ...)

Ruby的 ​​混入

从技术上讲,红宝石混入内实现类,在(模块)使用不同的模块中定义的代码

举一个简单的例子,假设我想实现一个文字处理器,可自动打印出我对商业信函友好。 既然你要只输入必要的数据,即收件人和消息。 该方案将考虑不同的友好一样,“先生”和“真诚”。

让我们开始在友好的形式定义:






模块CordialitaLettera



    



 DEF启动(地址)



        



返回“亲爱的先生。”+收件人+“\ n”



    



年底



    



最后的签名(函)



        



返回字母+“\ n”+“真诚,\ nCarlo史密斯”



    



年底







年底



特别是没有的话,只有两种方法,可以改变文本输入收到。

让我们写一个类“混”到这些方法,只是一个mixin:






类书



    



包括CordialitaLettera



    



最后stampaLettera(收件人,消息)



        



 =开始点(接收器)



        



 =字母+后



        



放签名(函)



    



年底







年底



上述信件类有一个方法,作为输入,在模块中定义友好的格式只信可变部分。

正如你可以看到语法非常相似,在Ruby继承,但是,不同的是后者, 在一个类可以实现任何形式的数量 -作为知道,一个类可以从派生且只有一个父类(红宝石不支持多重继承!)

例如,我们可以这样写:






 DEF的主要()



    



 Lengin = Lettere.new



    



 lEngine.stampaLettera(“阿莱西奥Saltarini”,



                          



 “我只是进行转让



                           



你的要求。“)



    



放



    



 lEngine.stampaLettera(“马太效应Pisconi”,



                          



 “我将传真发送给nr.038283873。”)







年底



它返回:





亲爱的sig.Alessio Saltarini,







我刚刚做了你要求转让。







此致







卡罗罗西








亲爱的sig.Matteo Pisconi,







我将传真发送给nr.038283873。







此致







卡罗罗西



这其中包括技术,使我们能够吸收的mixin的Java接口中使用:事实上,如果一个类是“混合”的一种形式,实际上它会执行方法(因此符合一定的接口) 。

在同一类...
电子学习
Ruby和Ruby on Rails的(课程) Ruby和Ruby on Rails的(课程)
创建Ruby和RoR的软件和Web应用程序。 从39€。
赞助商链接