Tag: 组成

特质inheritance与自我types注释的区别

在斯卡拉,我已经看到了构造 trait T extends S 和 trait T { this: S => 用来实现类似的事情(即S中的抽象方法必须在创build实例之前被定义)。 他们之间有什么区别? 你为什么要用另一个呢?

面向对象的最佳实践 – inheritancev合成v接口

我想问一个关于如何处理简单的面向对象devise问题的问题。 我有一些关于解决这个问题的最佳方法,但我希望听到Stack Overflow社区的一些意见。 有关网上文章的链接也赞赏。 我正在使用C#,但问题不是语言特定的。 假设我正在写一个video存储应用程序,其数据库有一个Person表, PersonId , Name , DateOfBirth和Address字段。 它还有一个Staff表,它有一个PersonId链接,还有一个Customer表也​​链接到PersonId 。 一个简单的面向对象的方法就是说,一个Customer “是”一个Person ,因此创build类有点像这样: class Person { public int PersonId { get; set; } public string Name { get; set; } public DateTime DateOfBirth { get; set; } public string Address { get; set; } } class Customer : Person { public int […]

与面向对象devise有关的构成是什么?

我听到(并在这个网站上阅读)很多关于“偏爱构成而不是inheritance”。 但Compositon是什么? 我从人的angular度理解inheritance:哺乳动物:动物,但是我无法在任何地方真正看到“组合”的定义。有人可以填补我吗?

JavaScript中的组合,inheritance和聚合

网上有很多关于组合与inheritance的信息,但是我还没有find像JavaScript这样的好例子。 使用下面的代码来演示inheritance: function Stock( /* object with stock names and prices */ ) { for (var company_name in arguments[0]) { // copy the passed object into the new object created by the constructor this[company_name] = arguments[0][company_name]; } } // example methods in prototype, their implementation is probably redundant for // this question, but list() returns […]

Haskell组成(。)与F#的pipe道转发运算符(|>)

在F#中,使用pipe道转发运算符|>很常见。 然而,在Haskell中,我只见过函数组合(.)被使用。 我明白,他们是相关的 ,但有没有一个语言的原因,没有在Haskell中使用pipe道转发还是别的东西?

React.js:将一个组件包装到另一个组件中

许多模板语言都有“插槽”或​​“合格”语句,这些语句允许做一些控制反转来将一个模板包装到另一个模板中。 Angular有“transclude”选项 。 Rails有收益声明 。 如果React.js有yield语句,它将如下所示: var Wrapper = React.createClass({ render: function() { return ( <div className="wrapper"> before <yield/> after </div> ); } }); var Main = React.createClass({ render: function() { return ( <Wrapper><h1>content</h1></Wrapper> ); } }); 期望的输出: <div class="wrapper"> before <h1>content</h1> after </div> 唉,React.js没有<yield/> 。 如何定义Wrapper组件来实现相同的输出?

inheritance与构成的区别

构成和inheritance是一样的吗? 如果我想实现组合模式,我怎样才能在Java中做到这一点?

如何用任意一个函数来构成`not`?

当我有类似的function f :: (Ord a) => a -> a -> Bool fab = a > b 我想用不包含这个函数的函数。 比如像这样做function g :: (Ord a) => a -> a -> Bool gab = not $ fab 我可以使combinator像 nf = (\a -> \b -> not $ fab) 但我不知道如何。 *Main> let nf = (\a -> \b -> not $ fab) […]

为什么使用inheritance?

我知道这个问题以前已经讨论过了 ,但是总是认为inheritance至less有时比组合更好。 我想挑战这个假设,希望得到一些理解。 我的问题是这样的: 因为你可以完成任何东西与对象组成,你可以用古典inheritance,因为古典inheritance经常被滥用[1] ,因为对象组成给你灵活地改变委托对象的运行时, 为什么你会用古典inheritance? 我可以理解为什么你会推荐一些像Java和C ++这样的语言来inheritance,这些语言没有提供方便的委托语法。 在这些语言中,只要不明显不正确,就可以使用inheritance来节省大量的input。 但是像Objective C和Ruby这样的其他语言既可以提供经典的inheritance,也可以为委派提供非常方便的语法。 Go编程语言是我所知的唯一的语言决定古典inheritance是比它的价值更麻烦,并且只支持委托代码重用。 另一种表述我的问题的方法是:即使你知道古典inheritance不是不正确的实现一个特定的模型,是否有足够的理由来使用它,而不是组成? [1]许多人使用经典的inheritance来实现多态,而不是让他们的类实现一个接口。 inheritance的目的是代码重用,而不是多态。 此外,有些人使用inheritance来模拟他们对“一个”的关系的直观理解,这个关系往往是有问题的 。 更新 我只是想澄清我的意思,当我谈论inheritance: 我正在谈论一种类inheritance,从一个部分或完全实现的基类inheritance 。 我并不是在谈论从一个纯粹的抽象基类inheritance,这个基类和实现一个接口是一样的,而我所logging的这个接口并不是反对的。 更新2 我知道inheritance是实现C ++多态性的唯一方法。 在这种情况下,很显然你必须使用它。 所以我的问题仅限于诸如Java或Ruby之类的语言,它们提供了实现多态的独特方法(分别为接口和鸭子打字)。

在同一个命名容器中重复使用facelets组合时避免重复的id

我有一个<ui:composition> ,它包含一些带有显式id和一些引用这些id的部分处理/更新的ajax事件。 我把这个xhtml片段封装在组合中,所以我可以在几个不同的地方使用它,而不必复制代码。 但是,当我在页面中多次使用组合( <ui:include> )时,会出现重复的idexception。 看来JSF并没有将每个组合包装在自己的命名容器中(比如<ui:component> )。 有一个简单的方法来包装我的作品在自己的命名容器? 或者每次我想在通用的命名容器中重用xhtml片段时,都必须使用复合组件?