Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 设计类的正确方法_C++_Design Patterns - Fatal编程技术网

C++ 设计类的正确方法

C++ 设计类的正确方法,c++,design-patterns,C++,Design Patterns,你应该如何设计课程? 比如说,你想用一个类来设计一台计算机。 我的方法是在类中存储对象: RAM、硬盘、CPU、主板 提供构建计算机的功能: 获取母本函数 将硬盘添加到主板func 将CPU添加到主板func 将RAM添加到主板func 提供计算机可以执行的其他功能: 玩马里奥卡丁车 这种方法有什么问题吗? 有什么好的课堂设计实践应该遵循吗?你要找的主题是“设计模式” 就系统而言,基本上任何可以编译和运行的代码都是“OK”的 你必须定义你的问题,定义限制,找到你手上所有的工具,然后决定什么是最适

你应该如何设计课程? 比如说,你想用一个类来设计一台计算机。 我的方法是在类中存储对象: RAM、硬盘、CPU、主板

提供构建计算机的功能:

获取母本函数

将硬盘添加到主板func

将CPU添加到主板func

将RAM添加到主板func

提供计算机可以执行的其他功能: 玩马里奥卡丁车

这种方法有什么问题吗?
有什么好的课堂设计实践应该遵循吗?

你要找的主题是“设计模式”

就系统而言,基本上任何可以编译和运行的代码都是“OK”的

你必须定义你的问题,定义限制,找到你手上所有的工具,然后决定什么是最适合你的设计

对于一个常用的系统,我认为您需要的是复合设计模式

在复合模式中,您提供了一个足够通用的接口来表示对所有组件都相同的操作,而且每个复合对象可能都有同样是复合的子对象。这可以被认为是破坏了结构。以你为例,

                 computer
                /   |   \
              HDD  RAM  GPU
这些子部件中的每一个子部件也可能有自己的子部件

这种模式在很多地方都有很好的描述,所以我将不再深入探讨它

是指向描述的一个链接(我找到的第一个)


在我看来,这本书也是一本必读的书。

可能有数百万种设计实践,它们是否好是一个有争议的问题。通常,有效的是好的;)你不应该考虑具体的东西,比如“内存”或“CPU”,而应该考虑更抽象的术语,比如“组件”或“连接器”。例如,CPU只是一个安装在特定插座中的组件,而主板是一个具有该插座的组件。因为插座只是一种连接器,所以一切正常。说到“功能”,这完全是主观的。没有CPU的电脑能玩游戏吗?不,没有硬盘怎么办?对为什么有什么不同?一个对象既可以是抽象的,也可以是具体的,类似于所说的对象。您仍然可以使用具体组件和抽象组件。。。