C 基本建筑设计
C++ basic architectural design
本文关键字:建筑设计 更新时间:2023-10-16
我不确定正确的决定,所以我问社区:
所以问题是:通过类型或通过属性建模属性还是第三种方式?
可以说我们有两个球 - 红色和蓝色,我必须对它们做些事情。所以第一个想法是:
struct Ball
{
RGB color;
};
void food( Ball& ball)
{
if ball.color == RED ....
if ball.color == BLUE ....
}
我想你明白了。但是我想摆脱if(..(,所以我可以将其更改为
struct Ball
{
virtual RGB color() = 0;
}
struct RedBall : public Ball
{
RGB color() { return( RED); }
};
struct BlueBall : public Ball
{
RGB color() { return( BLUE); }
};
void foo( RedBall&) ...
void foo( BlueBall&) ....
我不确定这是通过创建新类型(通过继承或使用装饰者(来描绘程序流和行为的正确方法,因为这可能会迅速导致巨大的类层次结构。
如果我考虑将这些类型与访客图案一起使用,尤其是用于装饰类型的情况,情况就变得更糟了。我在这里想念什么?
具有多个foo
的版本,该颜色的Ball
的不同颜色似乎是完全错误的。我会争辩说,如果您想这样做,则可能需要Ball
中的成员函数,该函数对foo
对球的不同颜色进行不同的作用。
您可以选择将其作为虚拟函数实现,并已派生类来表示每种颜色,或者具有现在在Ball
类内部内部的if statements,因此对他人来说"隐藏"。
具有对象取向的想法是要拥有"做事"的对象,而不仅仅是属性的持有者(在这种情况下为颜色(,因此解决此问题的"最正确"方法是让类本身知道什么对象那种应该做。
相关文章:
- 设计一个只能由特定类实例化的类(如果可能的话,通过make_unique)
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 将寄存器设计成可由C和C++访问的外设的最佳实践
- 询问在设计我的手臂模拟器功能表示格式1
- 有没有比在库中添加一个并非由所有派生类实现的新虚拟函数更好的设计实践
- 资源管理设计模式
- 多态杆件变量 - 类设计
- 如何设计具有不同类型的通知和观察器的观察者模式?
- 如何使用要传递给 mt19937 的可选随机种子参数设计函数
- 设计将引用元素移动到开头的数据结构.C++
- С++ wxWidgets:代码架构,设计原则和模式
- 用于在回调中调用解析器的设计模式
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- 需要为 C++ 中的以下问题设计递归算法
- 使用 SFINAE 设计模板方法
- C++,您能否设计一种数据结构,将指针保存在连续内存中并且不会使它们失效?
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- C++模板编程设计问题 - 根据输入文件返回不同的类型
- 在这种情况下我应该使用哪种设计模式
- C 基本建筑设计