问题标签 [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 投票
8 回答
370 浏览

oop - 帮助设计

我认为我很擅长编程 C# 语法。我现在正在寻找一些资源、书籍(首选)、网站、博客,它们处理设计面向对象的桌面应用程序和 Web 应用程序的最佳方式,尤其是在数据和数据库方面。

谢谢

0 投票
4 回答
1398 浏览

interface - 面向对象的分析与设计

为什么我不能在接口中指定静态类型的方法。

有没有其他方法可以做到这一点?

但我应该只使用抽象类的接口。

/

在接口中指定访问说明符有什么问题吗?

我想在接口中指定事件,并且只能由实现的类访问,所以我想要该事件的受保护访问说明符。

我有某些功能可以在另一个类中使用接口,在这种情况下我可以使用公共访问说明符。

0 投票
10 回答
86086 浏览

oop - 构造函数与工厂方法

建模类时,首选的初始化方式是什么:

  1. 构造函数,或
  2. 工厂方法

使用其中任何一个的考虑因素是什么?

在某些情况下,如果无法构造对象,我更喜欢使用返回 null 的工厂方法。这使代码整洁。在采取替代操作之前,我可以简单地检查返回的值是否不为空,而不是从构造函数中抛出异常。(我个人不喜欢例外)

比如说,我在一个需要 id 值的类上有一个构造函数。构造函数使用此值从数据库中填充类。在具有指定 id 的记录不存在的情况下,构造函数会抛出 RecordNotFoundException。在这种情况下,我将不得不将所有此类类的构造包含在 try..catch 块中。

与此相反,我可以在那些类上使用静态工厂方法,如果找不到记录,它将返回 null。

在这种情况下,构造函数或工厂方法哪种方法更好?

0 投票
2 回答
425 浏览

c# - 装饰器和虚拟方法

装饰器设计模式是扩展类功能的一个很好的解决方案。例如,如果我想要现有类方法的预处理和后处理方法,我可以创建一个装饰器并覆盖基类中的现有方法,并分别调用我的预处理和后处理方法。

我的问题是,在应用程序设计过程中很少会出现上述要求。我不能将我创建的所有方法都标记为虚拟方法,以便它们可以被装饰器覆盖。因此,我将不得不求助于方法隐藏。

有没有更好的方法来设计我的类,以便在我想要覆盖任何方法的情况下,它可以以最好的方式完成。

0 投票
8 回答
10284 浏览

architecture - 设计和建筑有什么区别?

这两个术语非常分散。它们到底有什么不同?

是否有任何现实生活中的例子或场景可以详细说明这种差异?

0 投票
2 回答
1086 浏览

architecture - 层和层有什么区别?

我对这两个术语感到困惑。这两个术语是什么意思?层和层有什么区别?

0 投票
3 回答
225 浏览

design-patterns - 公司和联系人 对象设计帮助

我希望有人(或某些人)可以帮助我们解决我们已经争论了几天的问题。给定附图,如何组织我们的业务对象?

我们正在寻找任何帮助(关于在哪里或如何搜索我们可以用来解决这个问题的设计模式/对象模型的想法。我们的情况稍微复杂一些,但我们试图为了问这个问题,我们尽可能地简化它。

一些细节:有些公司有产品线,有些没有。
每个公司都有一个联系人列表。如果一家公司至少有一个产品线,那么其中一些公司联系人也与至少一个产品线相关联。
一些联系人是其他联系人的参考(业务/个人)。
每个公司和每个联系人可以有零个或多个地址。

感谢您在寻找更合适的解决方案时提供的任何帮助(我的假设是我们将需要使用多个模型/模式)。

实体图

图的大图 (flickr.com)

**(来自图表)我们公司的员工/内部应用程序用户包含在联系人中,因为他们也可以是参考等。

0 投票
4 回答
24099 浏览

java - 组合和聚合有什么区别?

组合和聚合有什么区别?谁能给我这个OOAD的样本?

0 投票
14 回答
96232 浏览

design-patterns - 什么是反模式?

我正在研究模式和反模式。我对模式有一个清晰的概念,但我没有反模式。来自网络和维基百科的定义让我很困惑。

谁能用简单的话向我解释什么是反模式?什么目的?他们在做什么?这是坏事还是好事?

0 投票
2 回答
846 浏览

associations - 如何根据编程代码显示聚合?

我知道关联和聚合以及组合和泛化它们的定义是什么。继承是“是”关系,组合是“具有”关系。

现在我的问题是如何根据编程代码显示聚合和简单关联。?