Tag: oop

传递散列而不是方法参数

我发现在Ruby(通常是dynamictypes语言)中,一个非常常见的做法是传递一个散列,而不是声明具体的方法参数。 例如,不是用参数声明一个方法,而是像这样调用它: def my_method(width, height, show_border) my_method(400, 50, false) 你可以这样做: def my_method(options) my_method({"width" => 400, "height" => 50, "show_border" => false}) 我想知道你的意见。 这是一种好还是坏的做法,我们应该做还是不做? 在什么情况下使用这种做法是有效的,在什么情况下会是危险的?

PHP中self :: $ bar和static :: $ bar有什么不同?

可能重复: 新的自我与新的静态 在下面的例子中,使用self和static什么区别? class Foo { protected static $bar = 1234; public static function instance() { echo self::$bar; echo "\n"; echo static::$bar; } } Foo::instance(); 产生 1234 1234

代理和装饰模式之间的区别

你能给一个很好的解释什么是代理和装饰之间的区别? 我看到的主要区别是,当我们假设代理使用组合和装饰使用聚合,那么似乎很清楚,通过使用多个(一个或多个) 装饰可以修改/添加function到预先存在的实例(装饰),而代理有自己的代理类的内部实例,并委托给它添加一些额外的function(代理行为)。 问题是 – 使用聚合创build的代理是代理还是装饰器 ? 是否允许(按照GoF模式定义)使用聚合创build代理 ?

从具体类inheritance的任何好例子?

背景: 作为一名Java程序员,我从接口广泛地inheritance(而不是实现),有时我devise抽象基类。 然而,我从来没有真的觉得有必要对一个具体的(非抽象的)类进行子类化(在我这样做的情况下,后来certificate另一个解决scheme,比如代表团会更好)。 所以现在我开始觉得,从具体的课程中inheritance是不合适的。 一方面, Liskov替代原则似乎几乎不可能满足非平凡的阶级; 在这里还有许多其他的问题似乎回应了类似的意见。 所以我的问题是: 在哪种情况下(如果有)从具体类inheritance是否有意义? 你能否给出一个具体的,真实的例子,从另一个具体的类inheritance的类,你觉得这是最好的devise给定的约束? 我会特别感兴趣的例子,满足LSP(或例如满足LSP似乎不重要)。 我主要有一个Java背景,但我对任何语言的例子感兴趣。

面向对象编程中“接口”的定义是什么?

好的,我的一个朋友来回谈“接口”在编程方面的含义。 什么是“界面”的最佳描述。 对我来说界面是一个阶级的蓝图,这是最好的定义吗?

实际的面向对象的devise模式的例子

你在应用程序的JavaScript中使用了什么面向对象的devise模式,为什么? 随意张贴代码,即使没有正式的devise模式附加到它。 我已经写了大量的JavaScript,但我没有应用太多的面向对象的模式,我正在做什么,我相信我错过了很多。

C#属性实际上是方法吗?

直到现在,我还是觉得C#中Properties & Methods是两个不同的东西。 但后来我做了如下的东西。 这对我来说是一个“开眼界”。 我期待一个属性stringProp和一个方法stringProp ,而是我得到了这个。 为何发生这种事? 请有人解释一下。

python内部类的目的是什么?

Python的内部/嵌套类混淆了我。 没有他们的东西是不可能实现的吗? 如果是这样,那是什么东西?

Python中的inheritance点是什么?

假设你有以下情况 #include <iostream> class Animal { public: virtual void speak() = 0; }; class Dog : public Animal { void speak() { std::cout << "woff!" <<std::endl; } }; class Cat : public Animal { void speak() { std::cout << "meow!" <<std::endl; } }; void makeSpeak(Animal &a) { a.speak(); } int main() { Dog d; Cat […]

如何从JavaScript中的子类调用父方法?

我花了几个小时试图find解决我的问题,但似乎是无望的。 基本上我需要知道如何从一个子类调用父方法。 到目前为止,我所尝试过的所有东西都以不工作或覆盖父方法结束。 我正在使用下面的代码在JavaScript中设置OOP: // SET UP OOP // surrogate constructor (empty function) function surrogateCtor() {} function extend(base, sub) { // copy the prototype from the base to setup inheritance surrogateCtor.prototype = base.prototype; sub.prototype = new surrogateCtor(); sub.prototype.constructor = sub; } // parent class function ParentObject(name) { this.name = name; } // parent's methods ParentObject.prototype […]