Tag: 设计模式

如何在Ruby中使用Singleton设计模式创建类?

单例模式是一种设计模式,用于将类的实例化限制为一个对象实例。 虽然我知道如何用C ++和Java编写单例模式,但我想知道是否有人知道如何在Ruby中实现它?

访问者模式对动态类型语言有用吗?

访问者模式允许在不扩展对象类的情况下编写对象上的操作。 当然。 但是为什么不编写一个从外部操作我的对象集合的全局函数或静态类呢? 基本上,在像java这样的语言中,出于技术原因需要accept()方法; 但是在一种我可以在没有accept()方法的情况下实现相同设计的语言中,访问者模式是否变得微不足道? 说明:在访问者模式中,可访问的类(实体)有一个方法.accept()其作用是调用访问者的.visit()方法。 我可以看到java示例的逻辑:访问者为它支持的每个可访问类型定义了一个不同的.visit(n)方法,并且必须使用.accept()技巧在运行时选择它们。 但是像python或php这样的语言有动态类型,没有方法重载。 如果我是访问者,我可以在不知道实体的类型甚至方法的完整签名的情况下调用实体方法(例如, .serialize() )。 (这是“双重调度”问题,对吧?) 我知道一个接受方法可以将受保护的数据传递给访问者,但有什么意义呢? 如果数据公开给访问者类,它实际上是类接口的一部分,因为它的详细信息在类之外很重要。 无论如何,公开私人数据从来没有让我感到自己是访客模式的重点。 因此,似乎在python,ruby或php中我可以在访问对象中没有接受方法(并且没有reflection)的情况下实现类似访问者的类,对吧? 如果我可以使用一系列异构对象并在没有“访问”类的任何合作的情况下调用他们的公共方法,那么这仍然应该被称为“访问者模式”吗? 是否存在一些我缺失的模式的本质,或者它是否只是归结为“编写一个从外部操作对象来执行操作的新类”? PS。 我已经看过很多关于SO和其他地方的讨论,但找不到任何解决这个问题的东西。 指针欢迎。

在Ruby中实现的所有设计模式的备忘单?

我想知道是否有在Ruby中实现的所有设计模式的作弊,因此您不必重新发明轮子。

在Ruby中编写单例模式的正确方法是什么?

我正在尝试用Ruby编写最安全的单例。 我是这种语言的新手,它非常有弹性,我没有强烈的感觉,我的单例类将成功创建一个实例。 作为奖励,我希望该对象只有在真正使用时才会被实例化。

ruby如何允许方法和具有相同名称的类?

我碰巧在Ruby中使用Singleton类,只记得它在factory_girl中的工作方式。 他们解决了这个问题所以你可以使用很长的方式 Factory.create(…)和简短的 Factory(…)我想到它并且好奇地看到它们如何使类Factory也表现得像一个方法。 他们只是简单地使用Factory两次: def Factory (args) … end class Factory … end 我的问题是: ruby如何实现这一目标? 使用这种看似古怪的模式有危险吗?