问题标签 [object-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.
android - Android房间类型转换器不工作
我正在尝试在我的 Room 数据库中保存一些数据,但它一直向我显示一个错误,这是代码:
电影道.kt
电影数据库.kt
电影模型.kt
类型转换器.kt
错误告诉我:
错误:无法弄清楚如何将此字段保存到数据库中。您可以考虑为其添加类型转换器。私有 java.util.List 种子;
有人可以帮我弄清楚为什么会发生这个错误吗?非常感谢。
c# - 以前的实现是同步的时如何使用异步代码
最近我在学习面向对象编程中的组合。在许多关于它的文章中,有一个 FileStore 类(或者你怎么称呼它)的例子,它实现了如下接口:
FileStore 类实现了这个接口,一切都很好。它可以保存和读取文件。现在,教程文章经常说 FileStore 可以很容易地交换为,例如 SqlStore,因为它可以实现相同的接口。这样,客户端类可以存储到 SQL 而不是文件系统,只需注入 SqlStore 而不是 FileStore。听起来不错,但当我真正想到它时,我真的不知道如何实现它。数据库操作很适合异步完成。为了使用这个事实,我需要在 Read(int id) 方法中返回一个 Task 而不仅仅是字符串。Save(int id, string data) 也可以返回一个任务。考虑到这一点,我不能真正将 IStore 用于我的 SqlStore 类。
我看到的一种解决方案是使 IStore 像这样:
然后,我的 FileStore 类需要稍作更改,它将使用 Task.FromResult(...)。
这个解决方案对我来说似乎不方便,因为 FileStore 必须假装一些异步特性。
你会提出什么解决方案?我很好奇,因为在教程中一切听起来都很简单可行,但是当涉及到实际编程时,事情就变得复杂了。
javascript - 在 javascript 中使用对象组合传递变量
一段时间以来,我一直在尝试围绕对象组合进行思考,但我似乎无法找到“正确的方法”来完成我之前使用 OOP 所做的事情。假设我有一个带有 3 个变量的类 Entity,使用 OOP 我只需创建一个类 Entity 并且该类的所有子级都将具有这 3 个属性,但是使用对象组合我似乎无法理解我应该如何模仿这种继承。
我是否需要在我创建的所有其他需要它们的对象中创建这些属性?或者有没有更好的方法来重用这些属性?
python - 传递了一个对象而不是对象的属性?
有两个类 -Company
和Project
。Company
对象具有projects
列表属性,应指示添加到公司的Project
实例列表这是将项目添加到公司的类和方法的实现:
但是当我尝试初始化公司,然后项目并将其添加到公司时,添加 add_project 返回的不是project.name
,而是对象本身,所以即输出:
将会:
为什么它传递的不是名称,而是对象本身?无法找出这里缺少什么。
java - 在状态设计模式中使用组合和实现
我阅读此链接在此处输入链接描述,以了解 State Desing 模式。
接口类:
onState 类:
关闭状态:
电视上下文类:
测试类:
现在我有两个问题:
1- 为什么 TVContext Class implements
State 和有在一起Composition
?是 OO 中的错误吗?因为例如 Cat 继承自 Animal 类和 has_a 动物一起(在这种情况下)。
2-如果此 TestClass 中的最终程序员将上下文传递给 context.setState()
而不是tvStartState或tvStopState,则程序成功编译但在 run_time 中出错。
对于状态设计模式same name method
中的第二个问题,可以使用 继承而不是继承。但 int装饰设计模式不是。
javascript - 通过组合创建的对象上的方法无法访问所有属性
我正在为产品构建一个系列的概念,其中成员属于不同类型(accountHolder
、payingCustomer
、student
等)。最初我将它们FamilyMember
构建为.student
payingCustomer
accountHolder
鉴于对象组合在 JS 中被广泛吹捧为一个好主意,我决定走这条路。accountHolder
但是,如果属性属于另一个对象类型(例如),则特定对象类型(例如)的方法不能访问实例化对象的属性student
。
为了使这更客观,我决定使用以下代码复制该行为:
我期待john
's 方法isOfAge
能够访问 property isAdult
,因为它在对象中。但是,从概念上讲,我理解它为什么不起作用:isOfAge
是 的方法state
,而不是结果adult
实例。
如果我使用类甚至是传统的原型/构造器机制,我知道如何使其工作(例如附加到prototype
)。对于对象组合,我不知道如何到达那里,可能是由于缺乏 FP 经验。
谢谢您的帮助!
java - 有没有办法从具有对象组合的 pojo 中自动生成 flatten pojo
我需要将文档存储到 Elasticsearch 索引中,因此我定义了一个映射。从我的 java 客户端,我需要为它提供看起来像 Compony 类的 pojo。它有很多重复的值。我可以使用对象组合模式来解决这个问题,但 Elasticsearch 无法处理这种结构,因此它需要一个扁平结构。
我实际上想要像下面这样的 pojo,并以某种方式自动生成上面具有相同命名结构的 pojo。
有人知道这样的事情是否可能,从具有对象组合的 pojo 自动生成扁平 pojo,并为所有字段提供名称前缀?
javascript - 通过对象组合保持自身属性私有
我在看一个关于对象组合的博客,它在这里显示了这段代码:
当你去访问 jack alligator 时,当然可以访问 jack 上的 name 属性。如果我希望这个属性是私有的,那么 jack.name 返回未定义怎么办。我假设这需要关闭,但不确定最好/最干净的方法,或者只是传统的方法。
我知道你不能将 self 传递给 object.assign,但是如果你在 self 中有一个混合变量,你希望一些是私有的,一些是公共的?我原以为这里的解决方案是使用包含所有私有变量的“状态”文字和包含所有公共变量的“基本”文字,如果您想访问基本文字中的任何内容,则需要使用这在objects.assign 的其他对象中。
inheritance - ES6 et al. is it possible to define a catch-all method?
Composition is a useful alternative to inheritance when one wants to cascade method calls from child to parent, see child extended class method calls its super version but that still only sees child data
However, for the child to present an interface that is compatible with parent type, one must implement a potentially large number of stub methods that all have the same form, namely they just relay the call to the former parent (which is now a component).
My question here, is it possible to write a catch-all method? A catch-all method would be called when none of the other methods are called. The catch-all would then just relay calls to the parent component. Thus the stub would only have to be written once. Variations could be used to sort multiple inheritance, etc.
Something like this:
Hypothetically would instead be something like this:
perl - Perl/OOP:如何在“A 类”的构造函数中创建“B 类”对象
我有具有以下构造函数的 A 类:
我有另一个类 LWP::UserAgent,我想在我的 A 类中使用它。我可以通过这样做来解决问题:
但在这种情况下,我将有 1 个 UserAgent 对象,但我希望我的 A 类的每个实例都有一个唯一的对象。