S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

代码坏味

Posted on 2009-01-26 16:42 S.l.e!ep.¢% 阅读(1277) 评论(2)  编辑 收藏 引用 所属分类: Design Pattern
所面临的几个客户,他们所要求的功能大同小异

客户A 与 客户B的UI 不一样,
客户A 需要 Function_1, Function_2, Function_3, Function_4
客户B 需要 Function_2, Function_3, Function_5

于是将所有的 Function 都做到了基类
class BaseClass
{
public:
    void Function_1();
    void Function_2();
    void Function_3();
    void Function_4();
    void Function_5();
};

当公司多了一个客户C
客户C 需要的功能是 Function_2, Function_3, Function_6
于是基类需要再次修改

class BaseClass
{
public:
    void Function_1();
    void Function_2();
    void Function_3();
    void Function_4();
    void Function_5();
    void Function_6();
};

基类一改,BUG就越多,于是修改为

class Function_1
{
public:
};

……

class Function_6
{
public:
};

class Custom_A
{
public:

private:
     Function_1 m_fun_1;
     Function_2 m_fun_2;
     Function_3 m_fun_3;
     Function_4 m_fun_4;
};

class Custom_B
{
public:

private:
     Function_2 m_fun_2;
     Function_3 m_fun_3;
     Function_5 m_fun_5;
};

如此修改,虽然基类 BaseClass 可以避免每次的修改
但 瞬间,Function_x 类暴增~

类的个数多了几十个…………

Feedback

# re: 代码坏味  回复  更多评论   

2009-01-26 23:49 by Danny.Shi
看一下Design Pattern中的策略模式

# re: 代码坏味  回复  更多评论   

2009-01-29 08:13 by dophi
职责不单一,依赖不倒置,可以设计一个接口层,然后派生具体实现类。。说白了,就是策略模式。。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理