问题标签 [composition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
41046 浏览

oop - 什么是与面向对象设计相关的组合?

我听到(并在这个网站上读到)很多关于“偏好组合胜过继承”的信息。

但是什么是合成?我从 Person : Mammal : Animal 的角度理解继承,但我在任何地方都看不到 Compostion 的定义。有人可以填写吗?

0 投票
5 回答
173 浏览

java - 关于继承Java类的性质的问题

所以我想我有一个非常基本的问题。假设您在项目 com.bee.buzz 中包含了一个名为 com.cow.moo 的开源 Java 程序。

moo 有很多很棒的课程,其中大部分是你不想接触的,但有几个你会。现在,最好的办法是扩展您要修改的类,对吧?(我知道有很多关于扩展与实现的说法,但这些类都不是接口,所以这是不可能的。)

我的问题是,假设这是 moo 中的课程:

现在,假设我只想在扩展 Milk 的新类中使用 getMilk。但是,Milk 中的 getMilk 依赖于私有变量(如 currentMilk)和其他我不会包含的函数(如 convertToGallons。)如果我希望我的新函数正常工作,我是否必须包含这些其他变量和函数?我不想对功能进行大量修改,只需添加一点即可。最好的方法是什么?

一般来说,构建更大项目的技巧也会很有用。我认为这里的一些 Java 专家甚至不需要五秒钟就能得出答案。谢谢你的时间。

0 投票
1 回答
87 浏览

iphone - 如何将两个应用程序集成为一个应用程序

你好,

我是 iPhone 新手。我创建了两个单独的应用程序。我现在要做的是将两个应用程序集成为一个。例如,我可以显示两个按钮,单击第一个按钮将用户带到第一个应用程序,而单击第二个按钮将用户带到第二个应用程序。

我应该如何处理这个?

先感谢您。

0 投票
1 回答
956 浏览

objective-c - Objective-C 类组成

我试图澄清一些 Obj-C 类组合问题。我有 3 个课程:汽车、控制和车轮。

Car 类初始化 Control 和 Wheels 类。我打算创建一个简单的测试 iPhone 应用程序,其中包含一个UISliderUILabel. 当 UISlider 值更改时,必须将消息(我打算从 Control 类发送)发送到 Wheels 类方法之一。

所以问题是:如何正确地将消息从 Control 直接发送到 Wheels?我应该只通过 Car 类方法处理控制消息和 Wheels 响应吗?

0 投票
2 回答
260 浏览

c# - 如何使用类组合加载数据?

这是我的课程:

如您所见,我严格应用了“一个产品有多个价位,一个价位有多个周期”的业务规则。

我的问题:例如,当我处理 Product 类时,我不想问自己“是否已加载 priceScales ?” (因为我不会每次需要产品时都加载它)

解决方案 :

1/ 懒加载:我不喜欢,因为你在不知情的情况下运行sql查询,最终可能会出现1+n查询问题(我正在研究价格计算系统,所以我真的需要确定执行了哪个 sql 查询)

2/ 总是加载它:我不喜欢它,因为如果我将这个逻辑应用于所有内容,我最终会加载整个数据库。

3 /删除组合(即成员priceScales),在这种情况下,处理价格比例的最佳方法是什么:

  • 得到一个 Dictionnary<int,List<PriceScales>> 其中的关键是产品 id ?

  • 别的东西?

4/ 在我需要 priceScales 的方法的开头添加

它看起来像延迟加载,但它更明确。

5/ 其他一些我什至没有想到的事情 :)

谢谢

0 投票
2 回答
1217 浏览

c++ - 带有迭代器的 C++ 组合

我会尽量保持我的示例代码非常简单,但是当我在现场输入时它可能会出现错误。

我有一个名为 Phone 的课程。

我有一个名为 Feature 的结构。

如您所见,电话具有功能列表(矢量):即。蓝牙、GPS、收音机等,其中有一个类别:网络、导航、多媒体。

现在有关电话和功能的信息存储在 sqlite3 数据库中。我有一个辅助函数,它将从数据库中检索特定的电话模型并返回一个填充的电话对象。我还有一个函数,它接收一个电话对象并将电话写入数据库。

问题是我需要为客户提供一些迭代电话功能列表的方法。对于初学者,数据库助手需要了解这些特性,以便将它们写入数据库。其次,客户端可能需要从数据库中检索电话,然后向用户显示功能列表。

一种解决方案是在类 Phone 中添加以下函数

这对我来说不是一个理想的解决方案,因为客户端代码看起来不直观 - 它看起来好像客户端正在迭代电话,而实际上他们正在迭代功能。

另一种解决方案在http://accu.org/index.php/journals/1527的一篇文章中进行了讨论,该文章讨论了使用名为“memberspaces”的技术将迭代器公开给客户端代码。这将导致客户端代码更具可读性,但在我看来,实现有点混乱。

迭代器问题是否有更好的解决方案,或者我可以使用更合适的设计模式。

任何反馈将不胜感激。

0 投票
2 回答
341 浏览

analysis - 有关系

public class Elevator () { Button firstFloorbutton = ButtonFactory.getButtonInstance(this, 1); 按钮 secondFloorbutton = ButtonFactory.getButtonInstance(this, 2); 按钮第三层按钮 = ButtonFactory.getButtonInstance(this, 3); 按钮fourthFloorbutton = ButtonFactory.getButtonInstance(this, 4);

Elevator 和 Button 类之间存在什么样的关系?

根据Kathy and Bert (SCJP)第 92 页:HAS-A 关系基于使用而不是继承。换句话说,如果 A 类中的代码引用了 B 类的一个实例,那么 A 类就具有 B 类。

在我的示例 Elevator 类代码中引用了 Button 的实例,而 Button 引用了 Elevator 类的实例。

任何人都可以澄清这一点。

0 投票
2 回答
296 浏览

linq - 递归 (?) 将 LINQ 谓词组合成单个谓词

(编辑:我问错了问题。我遇到的真正问题是Compose LINQ-to-SQL predicates into a single predicates - 但是这个得到了一些很好的答案,所以我把它留下了!)

给定以下搜索文本:

我想以以下 SQL 结束:

实际上,我们将搜索文本拆分为空格,修剪每个标记,基于每个标记构造一个多部分 OR 子句,然后将这些子句“与”在一起。

我在 Linq-to-SQL 中执行此操作,但我不知道如何根据任意长的子谓词列表动态组合谓词。对于已知数量的子句,手动组合谓词很容易:

但我想处理任意搜索词列表。我做到了

这会产生一个 StackOverflowException - 大概是因为分配的 RHS 上的 predicate() 直到运行时才真正被评估,此时它最终会调用自己......或其他东西。

简而言之,我需要一种技术,在给定两个谓词的情况下,将返回一个由提供的运算符组成两个源谓词的单个谓词,但仅限于 Linq-to-SQL 明确支持的运算符。有任何想法吗?

0 投票
2 回答
4552 浏览

c# - 将 LINQ-to-SQL 谓词组合成单个谓词

(较早的问题Recursively (?) compose LINQ predicates into a single predicate与此类似,但我实际上问错了问题......那里的解决方案满足了提出的问题,但实际上并不是我需要的。他们不过是不同的。诚实的。)

给定以下搜索文本:

我想以以下 SQL 结束:

实际上,我们将搜索文本拆分为空格,修剪每个标记,基于 each 构造一个多部分 OR 子句,然后将这些子句“与”在一起。

我在 Linq-to-SQL 中执行此操作,但我不知道如何根据任意长的子谓词列表动态组合谓词。对于已知数量的子句,手动组合谓词很容易:

简而言之,我需要一种技术,在给定两个谓词的情况下,将返回一个由提供的运算符组成两个源谓词的单个谓词,但仅限于 Linq-to-SQL 明确支持的运算符。有任何想法吗?

0 投票
1 回答
2297 浏览

entity-framework-4 - 实体框架4中的组成问题:实体当前是只读的

使用 WCF RIA 服务和实体框架 4.

我有 3 个 DTO:学校、州、区。州 DTO 拥有一个具有组成的 District 属性。学校 DTO 拥有具有组成的州财产和区协会。

这个想法是,当我们创建/更新学校时,我们还允许用户输入州和地区(可以是现有的或新的)。

创建新的州和地区时,一切正常。但是当我在现有状态中只创建一个新区域时,我收到以下错误:“此实体当前是只读的。存在以下条件之一:已调用自定义方法,正在进行提交操作,或实体类型不支持编辑操作”