在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?
发布于 2014-09-11 02:06:07
你没有什么可做的,你有一堆条件,还有一堆基于这些条件的“做”。
所以既然..。你可以制作一些东西来存储条件和回调的集合.
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);
}
}
}https://stackoverflow.com/questions/25777731
复制相似问题