Closed. This question needs details or clarity. It is not currently accepting answers. Learn more。
想改进这个问题吗?添加细节并通过editing this post澄清问题。
5年前关闭。
C语言实现了以下功能:
每个分支都有不同的工作要做,它不满足开闭原则(因为p所指向的结构不稳定,经常会在其中添加新的字段,这意味着经常会在函数中添加新的过程代码);如何修改它以满足OCP?
想改进这个问题吗?添加细节并通过editing this post澄清问题。
5年前关闭。
C语言实现了以下功能:
function(struct_XX *p)
{
if(p->A)
{
if(p->B)
{
do something0;
}
if(p->C)
{
do something1;
}
if(p->D && p->E)
{
do something2;
}
if(p->Z)
{
do something3;
}
}
}
每个分支都有不同的工作要做,它不满足开闭原则(因为p所指向的结构不稳定,经常会在其中添加新的字段,这意味着经常会在函数中添加新的过程代码);如何修改它以满足OCP?
最佳答案
你没有付出太多,你有一堆条件,一堆“做”基于这些条件。
既然如此你可以做一些存储条件集合和回调的东西。。。。
void ocpfunction(struct struct_XX *p)
{
int i;
for(i=0; i<p->conditions_count; i++)
{
if(p->conditions[i].evaluate(p))
{
p->conditions[i].callback(p, p->conditions[i].context);
}
}
}
关于c - 如何修改功能以满足OCP? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25777731/
10-13 06:48