use*_*424 1 c++ design-patterns
我想有一个只包含公共函数的类,例如:
class foo
{
public:
int f1(param1, param2) ;
void f2(param1, param2);
};
Run Code Online (Sandbox Code Playgroud)
Class没有状态,它只是操纵输入参数,行为像辅助类,
这是一个好的设计吗?还是需要特殊模式?模式的名称是什么?
简答:在命名空间内使用函数.
namespace foo
{
int f1(param1, param2);
void f2(param1, param2);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您的应用程序具有OO设计,您应该问自己为什么需要一组仅操作输入参数的函数.相信我:你的代码试图告诉你一些事情 :-)
在你的代码片段中,你使用了虚拟名称(foo,f1,f2,param1,param2),所以我无法猜测你的函数是做什么的.但也许你的函数在相同的参数上运行:在这种情况下,你可以将参数提升为一个类.
之前:
bool IsLeapYear( int date );
void IncrementDay( int date, int numOfDays );
Run Code Online (Sandbox Code Playgroud)
后:
class Date
{
public:
bool IsLeapYear() const;
void IncremetDay( int numOfDays );
private:
int daysFromOrigin;
};
Run Code Online (Sandbox Code Playgroud)
如果您的函数采用不同的参数,您可以考虑将您的函数分配给OO设计中的现有类(假设您确实需要OO设计!).
最后,如果您的函数不相关,您可以考虑将它们中的每一个移动到现有类中,即使是静态方法(它实际上取决于函数的含义).
至于你的最后一个问题"这是一个好的设计吗?",这取决于你正在做的设计:
虽然根据你的范例,这可能是也可能不是一个好的设计,当然这不是一个好的C++ 习语:你应该在命名空间内使用自由函数而不是只使用静态方法的类.
| 归档时间: |
|
| 查看次数: |
615 次 |
| 最近记录: |