ruby 单态方法 分析
实体的行为取决于其类,但很多时候我们知道一个特定的实体需要特定的行为.在很多语言里,我们必须陷入另外再定义一个类的麻烦里,即使它只是用来接着实体化一次.在Ruby里,我们可以赋予任何对象属于其自身的方法.
ruby> class SingletonTest
| def size
| print "25\n"
| end
| end
nil
ruby> test1 = SingletonTest.new
#<SingletonTest:0xbc468>
ruby> test2 = SingletonTest.new
#<SingletonTest:0xbae20>
ruby> def test2.size
| print "10\n"
| end
nil
ruby> test1.size
25
nil
ruby> test2.size
10
nil
在这个例子里,test1和test2属于相同的类,但test2已被赋给一个重载的size方法,因而他们有不同的行为.一个仅属于某个对象的方法叫做单态方法.
单态方法常常用于图形用户界面(GUI)的元素的设计,在那里当不同的按钮被压下时将会激发不同的事件.
单态方法并非Ruby的专利,它也出现在CLOS,Dylan等语言中.同时,有些语言,比如,Self和NewtonScript仅有单态方法.他们有时被称作基于范例(prototype-based)语言.
相关推荐
-
ruby 单态方法 分析
实体的行为取决于其类,但很多时候我们知道一个特定的实体需要特定的行为.在很多语言里,我们必须陷入另外再定义一个类的麻烦里,即使它只是用来接着实体化一次.在Ruby里,我们可以赋予任何对象属于其自身的方法. ruby> class SingletonTest | def size | print "25\n" | end | end nil ruby> test1 = SingletonTest.new #<S
-
JSP页面中文参数的传递(get和post方法分析)
在项目中,我们经常遇到需要在JSP页面切换中传递中文字符.这主要有两种方式. ◆URL方式 例如: http://website/test1.jsp?act=add&type=苹果¶m=%20D%20B ◆FORM方式 例如: 复制代码 代码如下: ﹤form name=test mehtod="post"﹥ ﹤input type=hidden name=text2 value="中文"﹥ ﹤input type=text na
-
Java遍历集合方法分析(实现原理、算法性能、适用场合)
概述 Java语言中,提供了一套数据集合框架,其中定义了一些诸如List.Set等抽象数据类型,每个抽象数据类型的各个具体实现,底层又采用了不同的实现方式,比如ArrayList和LinkedList. 除此之外,Java对于数据集合的遍历,也提供了几种不同的方式.开发人员必须要清楚的明白每一种遍历方式的特点.适用场合.以及在不同底层实现上的表现.下面就详细分析一下这一块内容. 数据元素是怎样在内存中存放的? 数据元素在内存中,主要有2种存储方式: 1.顺序存储,Random Access(Di
-
JS运动改变单物体透明度的方法分析
本文实例讲述了JS运动改变单物体透明度的方法.分享给大家供大家参考,具体如下: 除了通过改变物体的 宽,高,letf,top位置或者是运动方向来实现物体运动效果之外,改变物体的透明度,也是运动特效 <script> window.onload = function () { var oDiv = document.getElementById('div1'); oDiv.onmousemove = function () { startMove(100); } oDiv.onmouseout
-
JS运动特效之任意值添加运动的方法分析
本文实例讲述了JS运动特效之任意值添加运动的方法.分享给大家供大家参考,具体如下: 回顾一下上个例子JS实现多物体运动的方法: <script> window.onload = function(){ var liTags = document.getElementsByTagName('li'); for(var i=0;i<liTags.length;i++){ liTags[i].timer = null;// 给每个li都添加一个timer liTags[i].onmouseov
-
JavaScript实现重力下落与弹性效果的方法分析
本文实例讲述了JavaScript实现重力下落与弹性效果的方法.分享给大家供大家参考,具体如下: 这里利用JS语言在Html页面中实现重力作用下落地后弹起的效果,如下所示: 在此例中主要涉及以下几个问题: 1.给球体一个释放初速度,如何实现越向下运动且在接触边缘之前,竖直方向上的速度speedY越大的效果? 答案:可以在计时器中,每及时一次,竖直方向上的速度speedY自增一个固定值来实现,下面代码中speedY += 6;就是实现这个效果. 2.球体接触地面(此例中指浏览器下边缘)后,如何实现
-
汉明码编码原理及校验方法分析
目录 1.奇偶校验 2.汉明码 汉明码怎么分组: 校验码的位置: 从发送者的角度,我该怎么发用上汉明码的数据呢: 我是接收者,我收到了一串汉明码,怎样用汉明码的性质来检错呢: 1.奇偶校验 我们约定一串编码里1的个数是偶数个,那么这串编码里携带的信息就是对的,否则就是错的.我们可以在开头对这串编码加一位校验码实现奇偶校验. 例子: 我们想传输10010这串码,那么在传输的时候,就传010010,其中在开头的0就是校验位. 我们想传输10000这串码,那么在传输的时候,就传110000,其中在开头
-
Netty事件循环主逻辑NioEventLoop的run方法分析
目录 Netty事件循环主逻辑 初始化 EventLoop 处理读事件 注意 Netty事件循环主逻辑 Netty 事件循环主逻辑在 NioEventLoop.run 中的 processSelectedKeys函数中 protected void run() { //主循环不断读取IO事件和task,因为 EventLoop 也是 juc 的 ScheduledExecutorService 实现 for (;;) { try { switch (selectStrategy.calculat
-
Spring中的refresh方法分析
目录 1 前言 2 源码入口哪里找 3 refresh 核心方法 4 总结 1 前言 在项目开发和面试过程中 spring 都是非常重要的,在前文中已经讲述了Spring BeanFactory 与 FactoryBean 的区别,在后续的文章中将继续更新 Spring 源码心得.了解原理性的一些内容之后就会在应用能够得心应手,在项目开发和面试中,就能很好地 battle 和 show muscle. 2 源码入口哪里找 Spring 的源码阅读,需要找到入口文件,一般情况下在 Spring 项
-
php简单实现单态设计模式的方法分析
本文实例讲述了php简单实现单态设计模式的方法.分享给大家供大家参考,具体如下: 单态设计模式通常包含以下三点: · 一个私有的 构造方法:(确保用户无法通过创建对象对其进行实例化) · 一个公有的 静态的 方法:(负责对其本身进行实例化) · 一个私有的 静态的 属性:(用于保存仅有的一个实例化对象) <?php class singleTon{ //用于保存仅有的一个实例化对象 private static $Instance=NULL; //构造方法 使用private 封装后 则只能在类
随机推荐
- 一些经常会用到的Javascript检测函数
- Python实现备份文件实例
- VBscript教程 第五课 VBScript常数
- iOS中的二级菜单及Cell的展开收起示例
- ASP.NET MVC异常处理模块详解
- javascript实现的猜数小游戏完整实例代码
- ES6新增的math,Number方法
- js 编写规范
- 发现ravmsmon.exe病毒的清除方法
- 浅谈SpringMVC+Spring3+Hibernate4开发环境搭建
- 用一句SQL解决SQL中断号问题 推荐
- 老生常谈MYSQL模式匹配 REGEXP和like的用法
- jQuery查看选中对象HTML代码的方法
- jQueryUI Datepicker组件设置日期高亮
- JavaScript中的数据类型转换方法小结
- 删除XP中“自定义通知”的历史项目
- WinRAR 任务计划 免费定时备份
- Android UI设计系列之自定义Dialog实现各种风格的对话框效果(7)
- 在vue项目创建的后初始化首次使用stylus安装方法分享
- SSM框架实现分页和搜索分页的示例代码