标签: ooad

当我们有不同的回报类型时实现策略模式

我有 SaveManager 抽象类和具体类 TVSaveManager、DataSaveManager 和 VoiceSaveManager 实现 SaveManager 抽象类。

List<SaveManager> lstPrdSaveManager;

        public SaveResponseModel SaveProducts(SaveProductsRequest objSaveProductsRequest)
        {
            SaveResponseModel saveResponseModel = new SaveResponseModel();

            lstPrdSaveManager = SaveManagerFactory.GetSaveManagers(objSaveProductsRequest, saveResponseModel);

            lstPrdSaveManager.ForEach(saveManager =>
                {
                    saveResponseModel = saveManager.MapAndSaveProduct();
                });


            return saveResponseModel;
        }
Run Code Online (Sandbox Code Playgroud)

工厂类将决定创建哪个管理器并向我们发送列表。我将循环遍历列表并调用每个具体类都将遵守的公共接口“MapAndSaveProduct”。我想更多或者更像是一种策略模式。

但问题是所有具体的 savemanage 的 MapAndSaveProduct 方法的返回类型都是不同的。TvSaveManager 的 TVResponse 和 DataSaveManager 的 DataResponse 等等。因此,我创建了 SaveResponseModel 类来组合所有返回类型(我将 SaveResponseModel 传递给工厂,以便它将传递给所有具体的 savemanager 类的构造函数。单个类将设置所需的属性。例如 TvSaveManager -> saveResponseModel.TvResponse)。我得到了想要的结果,并且代码看起来很干净。

问题是,1)当我们有不同的类型时,使用这种模式是否正确?2)如果具体类有不同的类型,我们不应该使用策略模式吗?3)在这种情况下我应该采用不同的设计模式吗?如果是的话是哪一个?

c# oop wcf ooad design-patterns

5
推荐指数
1
解决办法
3290
查看次数

Javascript 文字对象和单例模式

javascript中的文字对象实例化不是单例吗?

当然,如果未找到对象,则不会有“自身”实例化,但只会保留该对象的一个​​“副本”。

你怎么看?

javascript oop ooad

5
推荐指数
1
解决办法
1073
查看次数

在java代码中实现UML三元关联

我目前在代码中实现三元关联时遇到一些麻烦。我得到了二进制关联,但我不确定三元关联。

这是大学里的典型场景。

讲师可以向一名或多名学生教授一门科目
学生只能由一名讲师教授一门科目
讲师只能向一名学生教授一门科目

这三个类之间存在三元关联。

这三个类之间的关系如下面的 UML 类图所示,并且存在多重性

在此输入图像描述

我在互联网上阅读了有关此问题的不同来源,但找不到解决方案

如何实现这三个类之间的关联?或者,一般来说,实现类之间关联的可能方法是什么(在java中)?

java oop uml ooad class-diagram

5
推荐指数
1
解决办法
610
查看次数

C++中声明一系列类对象时的内存分配

class Data {
    double a, b, c;
};

int main() {
    Data x, y, z;
    cout << sizeof(x) << endl;
    cout << &x << " " << &y << " " << &z << endl;
}
Run Code Online (Sandbox Code Playgroud)

上述代码的输出是:

24
0x7ffd911f5640 0x7ffd911f5660 0x7ffd911f5680
Run Code Online (Sandbox Code Playgroud)

我的问题是: Data 类对象只需要 24 字节的空间,那么为什么编译器为每个对象分配 32 字节(0x7ffd911f5640和之间的内存空间)?0x7ffd911f5660

c++ oop ooad memory-management class

5
推荐指数
1
解决办法
140
查看次数

组合和聚合有什么区别?

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

java ooad

4
推荐指数
2
解决办法
2万
查看次数

面向对象的设计模式查询

我通过对如此不同的问题去,并试图找出什么是设计一个应用程序.我发现,某个地方,这是写我们应该做的类的对象,如果它有一个状态的最佳方式.

我在同一页面上发现应避免使用实用程序,所以我的问题是如何实现该功能.我们无法创建对象,因为功能可以具有且不具有状态.我们也不能使用静态方法.那怎么样.

PS ----我的问题可以是外行bcoz我是新手试图学习/实现设计模式所以如果有人可以提供我的阅读材料,与例子的链接会很高兴.

我从理论上知道了一些设计模式.

oop ooad design-patterns

3
推荐指数
1
解决办法
326
查看次数

我需要拆分一个大的DTO吗?

我有一个具有 30 个属性的 DTO,需要向其中添加一些属性。许多其他类使用此 DTO,有些类使用 10 到 20 个属性,有些其他类使用全部 30 个属性。

在一个类中,我可以创建一个使用 10 个属性的 DTO,其余 20 个属性将为空吗?

在这种情况下,通过继承或其他方式将 DTO 拆分为 2-3 个 DTO 是一个好方法吗?

inheritance ooad class dto

3
推荐指数
1
解决办法
926
查看次数

继承和接口

这有点是这个问题的后续问题.

假设我有一个继承树,如下所示:

Car -> Ford -> Mustang -> MustangGT
Run Code Online (Sandbox Code Playgroud)

每个类定义接口有什么好处?例:

ICar -> IFord -> IMustang -> IMustangGT
Run Code Online (Sandbox Code Playgroud)

我可以看到,也许其他类(如Chevy)将要实施IcarIFord,甚至IMustang,但可能不是IMustangGT因为它是如此具体.在这种情况下接口是多余的吗?

另外,我认为任何想要实现的类IFord肯定都希望通过继承来使用它的一个继承,Ford以免重复代码.如果这是给定的,那么实施的好处是IFord什么?

oop inheritance ooad interface

2
推荐指数
3
解决办法
793
查看次数

通用和继承之间的区别与适当的例子.OOAD

关于泛化和继承的研究让我感到困惑,两者都给出了相似的含义,好像某些东西被继承了......但是无法弄清楚实际的差异.

ooad object-oriented-analysis

2
推荐指数
2
解决办法
5375
查看次数

Layer和Tier有什么区别?

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

architecture ooad

1
推荐指数
1
解决办法
994
查看次数