GOF设计模式(三)——原型模式和基于原型集成的JavaScript对象系统

前言

在传统的面向对象编程语言中(如Java,C#), 类和对象就像柏拉图所说的“模子”和姜饼人,所有的姜饼人(对象)总是从模子(类)中创建而来,类生成实例就像厨师用模子做出姜饼人。

而在原型编程的思想中,类并不是必须的,对象未必从类中创建,而是通过克隆另一个对象得到。

为了更清晰地了解原型模式,将其与面向对象编程的思想区分开,我们先来了解一种轻巧又基于原型的语言—— Io语言。

IO语言

Io语言在2002年由 Steve Dekorte发明。可以从 http://iolanguage.com 下载到Io语言的解释器。

作为一门基于原型的语言,Io中没有类的概念,每一个对象都是基于另外一个对象的克隆。而所有对象的祖先,即根对象,在Io语言中叫 Object.

现在我们有了根对象Object, 想要创建一个对象叫做Animal, 那么Animal要从Object中复制而来,而Object就是Animal的原型。

 Aniaml := Object clone //克隆动物对象

假设在Io的世界中,所有的Animal都会叫,我们给Animal添加makeSound方法:

Animal makeSound := method( "animal makeSound " print ); 

接着,我们再创建一个 Dog 对象:

Dog := Animal clone

Dog 能够摇尾巴

Dog wagTail := method( "Dog is wagging his tail" print );

以此类推,我们可以创建出更多的对象。在以上举出的例子中存在这样的原型链:

Dog
Animal
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值