问题标签 [oop]

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 投票
5 回答
504 浏览

java - 公开远程接口或对象模型

我对公开异步远程接口的最佳方式有疑问。

条件如下:

  • 协议是异步的
  • 第三方可以随时修改数据
  • 命令往返可能很重要
  • 该模型应该非常适合 UI 交互
  • 该协议支持对某些对象的查询,模型也必须如此

作为改善我在这方面缺乏技能的一种手段(并全面提高我的 Java),我已经开始了一个项目来为xmms2创建一个基于 Eclipse 的前端(如下所述)。

所以,问题是;我应该如何将远程接口公开为一个整洁的数据模型(在这种情况下,跟踪管理和事件处理)?

我欢迎从一般讨论到模式名称删除或具体示例和补丁的任何内容:)


我在这里的主要目标是总体上了解这类问题。如果我的项目可以从中受益,那很好,但我严格介绍它是为了有一些东西可以开始讨论。

我已经实现了一个协议抽象,我称之为“客户端”(出于遗留原因),它允许我使用我很满意的方法调用来访问大多数公开的功能,即使它远非完美。

xmms2 守护程序提供的功能包括曲目搜索、元数据检索和操作、更改播放状态、加载播放列表等等。

我正在更新到 xmms2 的最新稳定版本,我想我不妨修复当前实现的一些明显弱点。

我的计划是在协议接口之上构建一个更好的抽象,允许与守护进程进行更自然的交互。当前的“模型”实现很难使用,而且坦率地说非常丑陋(更不用说真正可怕的 UI 代码了)。

今天我有了Tracks接口,我可以使用它来根据Track类的 id获取实例。搜索是通过Collections接口(不幸的命名空间冲突)执行的,我认为我宁愿将其移至 Tracks。

任何数据都可以随时被第三方修改,这应该在模型和分发的变更通知中得到适当的反映

这些接口在连接时通过返回如下所示的对象层次结构公开:

  • 联系
    • 回放 getPlayback()
      • 播放、暂停、跳转、当前曲目等
      • 公开播放状态更改
    • 轨道 getTracks()
      • 跟踪 getTrack(id) 等
      • 公开音轨更新
    • 集合 getCollection()
      • 加载和操作播放列表或命名集合
      • 查询媒体库
      • 公开集合更新
0 投票
6 回答
3787 浏览

java - 在 Java 桌面应用程序中保存数据的最佳方式是什么?

我的桌面应用程序中有一个大型 Java 对象树,并且正在尝试确定将它们作为文件保存到文件系统的最佳方法。

我的一些想法是:

  • 使用 DataOutputStream 滚动我自己的序列化程序:这将使我能够最大程度地控制文件中的内容,但代价是对其进行微观管理。

  • 使用 ObjectOutputStream 及其各种相关类的直接旧序列化:虽然我发现数据很脆弱,但我并没有出售它。更改任何对象的结构都会破坏它的序列化实例。因此,我陷入了似乎是可怕的版本控制噩梦中。

  • XML 序列化:它没有那么脆弱,但是直接序列化的速度要慢得多。它可以在我的程序之外进行转换。

  • JavaDB:我考虑过这个,因为我很擅长编写 JDBC 应用程序。这里的区别是数据库实例只会在文件被打开或保存时持续存在。它并不漂亮,但是……如果以后需要,它确实适合迁移到中央服务器架构,并且它引入了以更简单的方式查询数据模型的可能性。

我很好奇看看其他人是怎么想的。我希望我错过了一些比上述方法更明显、更简单的方法。


以下是从以下答案中挑选出的更多选项:

  • 对象数据库- 比 ORM 方法具有明显更少的基础架构,并且比 XML 方法执行得更快。谢谢阿库
0 投票
16 回答
1818 浏览

oop - 如何说服我的同事不要将数据集用于企业开发(.NET 2.0+)

与我一起工作的每个人都痴迷于以数据为中心的企业开发方法,并且讨厌使用自定义集合/对象的想法。以其他方式说服他们的最佳方法是什么?

0 投票
6 回答
496 浏览

python - 如何简单地从现有实例继承方法?

下面我有一个非常简单的例子来说明我正在尝试做的事情。我希望能够将 HTMLDecorator 与任何其他类一起使用。忽略它被称为装饰器的事实,它只是一个名字。

输出:

我正在尝试做的事情可能吗?如果是这样,我做错了什么?

0 投票
2 回答
994 浏览

oop - OO编程中的LSP?

我认为 LSP 的全名是 Liskoff 替换原则是否正确?我很难找到一个 [在线] 资源来引用任何关于这方面的信息......它似乎是 OOP 的基石,但我很难找到定义。

0 投票
11 回答
13726 浏览

oop - 哪个班级设计更好?

哪个类设计更好,为什么?

或者

0 投票
6 回答
44359 浏览

oop - 耦合和内聚

我试图将耦合和内聚的概念归结为一个简洁的定义。有人可以给我一个简短易懂的解释(比维基百科上的定义短这里这里)?他们如何互动?

谢谢。

有人有一个好的,简短的例子吗?

0 投票
4 回答
10352 浏览

python - 迭代给定模块中给定类的子类

在 Python 中,给定一个模块 X 和一个类 Y,我如何迭代或生成模块 X 中存在的所有 Y 子类的列表?

0 投票
5 回答
841 浏览

c# - 任意命名约定(业务对象)

好的,你做Business.Nameor Business.BusinessName SubCategory.IDorSubCategory.SubCategoryID

在你的数据库中呢?

为什么?

我对两者都感到厌烦。希望有一个“正确的答案”

0 投票
13 回答
26827 浏览

database-design - 你如何处理数据库中的多态性?

例子

我有Person,SpecialPersonUser. Person他们SpecialPerson只是人——他们在网站上没有用户名或密码,但他们存储在数据库中以保存记录。用户拥有与在网站注册时相同的所有数据,Person并且可能SpecialPerson拥有用户名和密码。


你会如何解决这个问题?您是否有一个Person表来存储一个人的所有常见数据,并使用一个键来查找他们的数据SpecialPerson(如果他们是特殊的人)和 User(如果他们是用户),反之亦然?