【发布时间】:2015-05-28 06:02:42
【问题描述】:
我想以这种方式分离的原因 - 数据依赖于无,方法可以有数百个依赖关系。所有,谁依赖于数据不应该依赖于方法依赖。
我想做这样的事情:
//s_class_name.h
struct structName
{
data m_data
}
//class_name.h
class className : public structName
{
public:
void method(arg1, arg2, arg3, ..., argN); //using m_data
}
static_cast<className *>(&structNameObject)->method(arg1, arg2, arg3, ..., argN);
我看到两个问题:
1) 对数据的所有访问均已打开。我想向所有使用结构而不是类操作的人开放数据。
2) 静态转换向下转换未定义。
能否解释一下,如何更好地实现模式数据和逻辑分离?
UPD.:我有另一个想法,但我无法解释为什么它不好:
1) 在 s_class_name.h 中,我可以声明模板方法
2)在class_name.h中,我可以实例化模板参数。
【问题讨论】:
-
Dieter Lücking,对不起。固定
-
“我要向所有用struct操作的人开放数据,而不是用class。” 你的意思是要向所有操作的类开放数据在数据上,您希望数据对类的用户隐藏?
-
我的观点:逻辑或行为不能(理智地)用对象来表达。
-
我的意思是,我想向所有使用该结构的人开放该结构的文件。但我想对所有与班级合作的人隐藏它。
标签: c++ design-patterns architecture dependencies dependency-management