同一份设计蓝图(类),不同的实例对象,可以表现出不同的行为特征,这种(不牵涉继承的)多态性在Java 这样的静态语言里,通过方法重载得到具体实现。6.1节中我们分析知道了Ruby中的重载是指重写,Ruby 如何来反映不同实例对象的不同行为特征呢?
在Ruby里,可以给具体的实例对象添加实例方法,这个方法只属于这个实例对象,我们把这样的方法称之为单例方法。
看程序 E6.4-1.rb :
ruby 代码
-
- class Person
- def talk
- puts "Hi! "
- end
- end
-
- p1=Person.new
- p2=Person.new
-
- def p2.talk
- puts "Here is p2. "
- end
-
- def p2.laugh
- puts "ha,ha,ha... "
- end
-
- p1.talk
- p2.talk
- p2.laugh
单例方法也叫作单件方法。定义单例方法,首先要生成一个实例对象,其次,要在方法名前加上对象名和一个点号“.”。
程序 E6.4-1.rb 中,对象p1不可以laugh , laugh方法只属于p2对象。
实例方法,属于类的每个实例对象。单例方法只出现在单个实例对象中。用单例方法可以极大地丰富多态性在 Ruby中的表现力。
完整阅读,请看我写的 Ruby语言中文教程all in one
分享到:
相关推荐
├─第一章 旭瑶-小滴架构师成长系列软件设计模式课程介绍 │ 1.2设计模式全家桶课程大纲速览.mp4 │ ├─第二章 想成为架构师的你,不可不知道的设计模式精髓 │ 2.1设计模式的六大原则你知道多少.mp4 ...│ 6.4
6.4 线程优先级 Java中的线程可以设置优先级,通过setPriority()方法来设置线程的优先级。线程优先级的主要特点是可以控制线程的执行优先级,例如可以将高优先级的线程设置为高优先级,以确保其执行的及时性。 6.5...
抽象工厂5.1 把抽象工厂应用到TouchPainter应用程序5.2 在Cocoa Touch框架中使用抽象工厂5.3 总结第6章 生成器6.1 何为生成器模式6.2 何时使用生成器模式6.3 构建追逐游戏中的角色6.4 总结第7章 单例7.1 何为单例...
10. **设计模式**:实习生可能会接触到一些常见的设计模式,如单例、工厂、观察者模式等,它们是解决特定问题的成熟解决方案。 11. **单元测试**:通过JUnit进行单元测试,确保代码的质量和功能的正确性,学习断言...
6.4 apply方法 84 6.5 应用程序对象 85 6.6 枚举 86 练习 87 第7章 包和引入 A1 91 7.1 包 91 7.2 作用域规则 93 7.3 串联式包语句 95 7.4 文件顶部标记法 95 7.5 包对象 96 7.6 包可见性 97 7.7 引入 97...
6.4实训练习 附录A参考答案 A.1第1章实训练习参考答案 A.2第2章实训练习参考答案 A.3第3章实训练习参考答案 A.4第4章实训练习参考答案 A.5第5章实训练习参考答案 A.6第6章实训练习参考答案 参考文献
【例2.6】单例模式-互联网连接 【例3.2】组合模式-五子棋代码 【例3.3】组合模式-空军指挥系统 【例3.4】组合模式-世界问候语 【例3.7】类适配器模式-客户信息验证 【例3.8】对象适配器模式-字符...
- 创建型模式主要用于对象的创建过程,包括抽象工厂、构建者、工厂方法、原型和单例等五种模式。 - **3.2 抽象工厂** - 介绍了一种可以创建一系列相关或相互依赖的对象而无需指定它们具体的类的方式。 - **3.3 ...
6.4 提供源代码实例,加深理解。 7. 观察者设计模式 7.1 观察者模式的定义和概念。 7.2 什么是观察者模式,以及该模式的组成。 7.3 实现观察者模式,包括Java内置的观察者模式应用。 7.4 何时使用观察者模式,...
第 1章 什么是JavaScript 1 1.1 简短的历史回顾 1 1.2 JavaScript实现 2 1.3 JavaScript版本 9 1.4 小结 10 ...2.1 script元素 11 2.2 行内代码与外部文件 18 2.3 文档模式 18 2.4 noscript元素 19 ...6.4 M
- **6.4 如何使用开闭原则** 提供在设计系统时遵循开闭原则的具体步骤。 - **6.5 最佳实践** 分享在实际项目中成功应用开闭原则的经验教训。 #### 第二部分 真刀实枪——23种设计模式完美演绎 接下来的部分将...
- **Singleton:** 用于创建单例对象。 **8.4 Require, load和include** - **require/load:** 用于加载外部的Ruby文件。 - **include:** 用于将一个模块混合到当前类中。 #### 九、异常 **9.1 异常处理** ...
5. **单例模式**(6.4): - 单例模式确保一个类只有一个实例,并提供一个全局访问点。这在需要全局共享资源或控制实例数量时非常有用。 - 例如,数据库连接池、线程池等场景就常使用单例模式。 6. **生成器模式*...
6.4 如何使用开闭原则 6.5 最佳实践 第二部分 我惹了谁——真刀实枪篇 第7章 单例模式 7.1 我是皇帝我独苗 7.2 单例模式的定义 7.3 单例模式的应用 7.4 单例模式的扩展 7.5 最佳实践 第8章 工厂方法模式 8.1 女娲造...
**6.4 构造函数和静态工厂方法** - 提供构造函数来初始化对象状态。 - 静态工厂方法可以提供更灵活的对象创建方式。 **6.5 TOSTRING(), EQUALS(), HASHCODE()** - 重写toString()方法,提供对象的状态信息。 - ...
final与单例模式、线程安全初始化等。 **6. JUC (Java并发工具包)** 6.1 汇总 包括锁、并发容器、线程池等工具类。 6.2 Lock框架和Tools类 如ReentrantLock、Semaphore、CountDownLatch等。 6.3 并发集合 如...
1.5.3 序列化单例和类型安全的枚举 1.5.4 版本管理 1.5.5 为克隆使用序列化 1.6 文件管理 1.7 新I/O 1.7.1 内存映射文件 1.7.2 缓冲区数据结构 1.7.3 文件加锁机制 1.8 正则表达式 第十二章 XML 2.1 XML概述 2.1.1 ...
**6.4 指示符** 用于引用变量或字段。 **6.5 `this`与`super`** 分别指代当前对象和超类的对象。 **6.6 函数应用** 调用函数的语法,包括命名参数和默认参数的使用。 以上是Scala编程语言的核心概念和语法结构的...