首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修改该函数以满足OCP?

如何修改该函数以满足OCP?
EN

Stack Overflow用户
提问于 2014-09-11 01:44:34
回答 1查看 66关注 0票数 0

在C中实现了以下功能:

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

发布于 2014-09-11 02:06:07

你没有什么可做的,你有一堆条件,还有一堆基于这些条件的“做”。

所以既然..。你可以制作一些东西来存储条件和回调的集合.

代码语言:javascript
复制
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);
      }
   }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25777731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档