问题标签 [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 回答
482 浏览

ooad - OO设计问题

我有两种类型的产品 - 折扣(10% 光盘)和非折扣(0%)这些产品中的每一个都可以是 LocalProduct / ExportableProduct,其中出口产品需要缴纳 15% 的销售税。

对这种情况进行建模的最佳方法是什么。我是 S/W 设计的绝对新手,我的想法非常有限 1. 有 4 种不同的产品子类型 2. 使用策略模式并有 4 种不同的策略。

有人可以建议我如何使用上述选项或其他选项有效地对此进行建模。

0 投票
3 回答
476 浏览

.net - 在 .NET 中处理单例对象

我有两个类 ClassA 和 ClassB 都引用了一个单例对象 ClassHelper。我的问题是,一旦我使用 ClassA 和 ClassB 完成后,我应该如何处理单例对象

编辑:

问候学习者

0 投票
7 回答
67925 浏览

oop - “程序到接口,而不是实现”是什么意思?

在阅读设计模式时会偶然发现这句话。

但是我不明白,谁能给我解释一下?

0 投票
7 回答
8309 浏览

c# - 抽象基类强制每个派生类为单例

我如何创建一个抽象类来强制每个派生类都是 Singleton ?我使用 C#。

0 投票
4 回答
130 浏览

c# - 帮我在两种设计之间做出选择

// 愚蠢的标题,但我想不出更聪明的方法

我有一个代码(见下文,很抱歉代码很长,但它非常非常简单):

您更喜欢哪个选项(选项 1 或选项 2)?在哪些情况下我应该使用 option1 或 option2 ?option1 或 option2 (composition, aggregation) 有什么特殊名称吗?

0 投票
2 回答
1658 浏览

c# - 方法调用公共/私有成员或方法最佳实践 - C#.NET

从私有方法和公共方法调用成员/字段的最佳实践是什么?私有方法应该总是调用私有字段还是应该调用公共成员?

0 投票
16 回答
397133 浏览

oop - 内聚与耦合之间的区别

内聚和耦合有什么区别?

耦合和内聚如何导致好的或差的软件设计?

有哪些示例概述了两者之间的差异以及它们对整体代码质量的影响?

0 投票
5 回答
3061 浏览

c++ - 包含类如何调用包含类的成员函数 - C++ 中的组合

这是从 C++ 角度来看的一般设计问题。我有一个容器类,其中包含 2 个其他类的对象。

从容器类中,我们可以调用包含的类对象的方法,“因为我们拥有包含的类对象的句柄”,例如 objContainedClass1->SomeMthod();

但是我想知道容器类的包含类对象(objContainedClass1)如何访问方法。

我可以想到以下几种方式:

  1. 容器类对象将指向自身的指针(this 指针)传递给包含的类构造函数。使用这个指针,被包含的类可以访问容器类的方法。

  2. 将容器类中的一些函数设为静态。

还有更多实现这一目标的想法吗?

谢谢

0 投票
1 回答
103 浏览

c++ - 如何创建工厂?客户端可以为接口中未定义的方法设置数据吗?(设计问题)

我几乎没有设计问题:我有一个工厂将创建一种或另一种类型的对象。但是我的客户要求是将来自外部世界的数据(通过 setter 方法)提供(提供)给类型 1 的具体类,而不是类型 2。

如果我将这些 setter 方法放在接口中,则需要在两个具体类中强制实现这些方法。这不是我的要求。我想为第一种类型(一些设置器)提供一种数据,并想为其他类型提供另一种数据(可能与先前类型包含的设置器不同。)

例如

现在在这里我不能使用 ISubjectExecutor (*pSubjectExecutor) 的指针在从工厂接收指针 (ISubjectExecutor) 后的任何时候调用我选择的 Win32Executor 或 COMExecutor 的 setter 方法。因为这些所有的 setter 永远不会存在于 ISubjectExecutor 接口中,并且您无法访问任何从未包含在接口中并且存在于具体实现中的方法。

如何解决这个设计问题来解决。?

问候哈桑

0 投票
2 回答
956 浏览

c++ - C ++中“isa”的技术方面

究竟是什么意思technical point of view,我明白这意味着我derived class总是可以转换为base class,就是这样?我读了一些材料,没有任何技术方面的参考,只有哲学!提前致谢