问题标签 [ooad]

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 投票
0 回答
1544 浏览

c++ - 一个关于 C++ / OOD 面试问题的问题

  1. 在 C++/OOD 面试中问你最有趣或最难的问题是什么?
  2. 在 C++/OOD 面试中,您最想问候选人的最有趣或最困难的问题是什么?

编辑:更新了误导性的标题
编辑:当然:
1.当你是被采访的人时。
2.当你采访某人时。

0 投票
6 回答
527 浏览

delphi - 如何在没有“Outofmemory”错误的情况下处理数十亿个对象

我有一个可能需要处理数十亿个对象的应用程序。每个对象都是 TRange 类类型。这些范围是在取决于某些条件和其他对象属性的算法的不同部分创建的。因此,如果您有 100 个项目,则无法直接创建第 100 个对象而不创建所有先前的对象。如果我创建所有(数十亿个)对象并添加到集合中,系统将抛出 Outofmemory 错误。现在我想遍历每个对象主要有两个目的:

  1. 为每个 TRange 对象应用一个操作(例如:输出某些属性)
  2. 获得某个属性的累积总和。(例如:每个范围都有一个权重属性,我想检索总权重,它是所有范围权重的总和)。

如何在不引发内存不足的情况下有效地为这些对象创建迭代器?

我通过将函数指针传递给算法函数来处理第一种情况。例如:

但是这种方法的问题是,要添加一个新功能,比如检索我之前提到的总重量,我必须复制算法函数或传递一个可选的输出参数。请提出一些想法。

提前谢谢
大家

0 投票
6 回答
1729 浏览

oop - 封装。精心设计的课堂

今天我读了一本书,作者写道,在一个设计良好的类中,访问属性的唯一方法是通过其中一个类方法。这是一个被广泛接受的想法吗?为什么封装属性如此重要?不做会有什么后果?我早些时候在某处读到这可以提高安全性或类似的东西。PHP 或 Java 中的任何示例都会非常有帮助。

0 投票
6 回答
307 浏览

java - 将对象拆分为最基本的部分

不确定标题是否抓住了我在这里想说的。

在 OO 中设计时,我是否应该将我的对象拆分为最具体的区域 - 所以如果我有一个处理创建对象的工厂对象,但后来我遇到了一种为其他目的创建对象的方法,即使它们可能是相同的objects 是否值得创建一个单独的 fcatory 或只是添加到现有的。

我最大的担心是用大量的东西来增加类,或者拆分对象并将我的项目稀释成一大堆类。

有什么帮助吗?

编辑:

我想在旁注/子主题中,我想找出您应该在程序中使用的粒度级别。怎么样,你应该去多低?

0 投票
3 回答
108 浏览

oop - OOP 设计:将对象特定的“比较”方法放在哪里?

我有一些来自存储在测试集合对象中的一系列测试运行的测量对象实例。我还有一些逻辑可以比较两个测试结果对象实例并告诉我它们是否“足够接近”。

这个逻辑应该放在哪里?

  1. 把对象当作方法?像:instance.approximately_equal(other)
  2. 在对象的类上作为类/静态方法? class.approximately_equal(a,b)
  3. 把集合对象当作方法? collection.approximately_equal(a,b)

什么是正确的面向对象设计?

(我问,因为虽然#1 似乎是正确的解决方案,但我永远不会问某个实例是否近似_等于另一个实例。只有当“某些对象组”彼此相等时。这让我思考。 ..)

谢谢

0 投票
1 回答
615 浏览

winforms - 协调 MVP 三元组

假设您的应用程序(WinForms .NET 2.0 应用程序)中有多个 MVP 三元组,每个三元组负责一个责任区域。您首选的协调 MVP 三元组之间通信的方式是什么?

选项 1 一个协调器对象,它“拥有”每个模型并通过订阅每个模型中的必要事件来负责协调,然后决定在什么场景中调用什么模型方法。

担心这可能是“神”课。

选项 2 演示者“拥有”另一个演示者,当模型中发生感兴趣的事情时,演示者使用另一个演示者来推动交流。

担心演示者不应该有一个公共界面(演示者优先的方法),这打破了这一点。

我只是想知道其他人做了什么来以可扩展的 OO 方式解决这个问题。如果我添加另一个 MVP 三元组会怎样?将它融入我的协调器有多难?一定有一些很好的例子来说明如何在 WinForms 应用程序中管理多个 MVP 三元组?

0 投票
2 回答
93 浏览

design-patterns - 图像处理应用程序如何识别用户打开的文件?

图像处理应用程序如何识别用户打开的文件?

众所周知,图像处理应用程序可以打开所有已知格式的图像。我的问题是,图像处理应用程序如何知道它正在打开什么样的文件。它会从文件扩展名中知道,或者它将以二进制文件打开文件并读取文件的标题,然后我将创建该文件类型的对象。

或任何已知的找出图像文件格式的方法。

对于上述问题,您如何设计系统。您将使用哪些设计模式。

提前致谢。

哈沙

0 投票
1 回答
112 浏览

java - 这是一个足够好的抽象还是我可以做得更好?

需求:需求是拉取(execute())一组数据源。拉动是有序的,可以分组为小的子组。

设计:每个拉动都被抽象为一个步骤。子组被表示为 WaterFallStep,因为组中每个数据源的拉取都是有条件的,并且遵循瀑布模型,即如果组中的第一个数据源拉取成功,那么我会脱离组。

问题

  1. 这是一个足够好的抽象还是我可以做得更好?
  2. 如何在 JPA 2 中表示这一点?我知道我们可以使用描述符来映射继承,但我主要关心的是 WaterFallStep-to-BasicStep 之间的一对多关系

谢谢你。

替代文字

0 投票
1 回答
275 浏览

c# - 这个静态类会在多用户场景中中断吗?

假设我使用扩展方法创建了一个静态类,如下所示:

在多用户系统中,状态管理字典会无法为变换算法提供正确的值吗?常规类会是更好的设计,还是将 Dictionary 推入方法中是更好的设计?

0 投票
1 回答
1125 浏览

c++ - 是否有面向对象设计问题的真实世界示例的在线资料?

我想练习用 C++ 解决面向对象的设计问题。是否有任何在线材料包含使用设计模式的示例现实世界问题和解决方案?

我搜索了,但我无法获得在线资料。请帮助我。