C++三个类调用降低耦合性的问题

wildangel817 2017-02-09 04:27:27
现有class A, B, C 三个类,其中 A是管理类, 调用 B类和 C类,其中C类要到B类中的某些参数,那么如何处理才能降低A、B
、C三个类的耦合度呢?

简单的情况


class B
{
public:
B()
{
b_1 = 100;
}
vitual ~B()
{

}
private:
int b_1;
public:
int GetParam1()
{
return b_1;
}
}

class C
{

private:
int c_1;
public:
void SetParam1(int value)
{
c_1 = value;
}
}

classA
{
prviate:
B b;
C c;
public:
void Exapmpe1()
{
c.SetParam1(b.GetParam1());
}
}


复杂的情况,B类不定时的会修改 b_1 的值,而C类需要使用 实施的 b_1 的值,如何处理能够更好的降低 B、C类的耦合度呢?

...全文
772 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zarelaky 2019-01-11
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
https://gitee.com/giveda/giveda_gobject_cpp11 楼主,以上开源代码,供你参考,100%解耦合,使用最简单,没有之一。
超级能量泡泡 2017-02-17
  • 打赏
  • 举报
回复
第一,改变直接引用成员变量的方式来操作其他类对象,使用接口调用方式 第二,将接口函数的声明和实现分在.h和.cpp中编写
wildangel817 2017-02-13
  • 打赏
  • 举报
回复
引用 1 楼 lianshaohua 的回复:
1、接口隔离+工厂 2、通过ipc
ipc 方式我大概知道。 请问接口隔离 + 工厂 如何理解呢?有范例么?
wildangel817 2017-02-13
  • 打赏
  • 举报
回复
引用 3 楼 x20121223 的回复:
subject-observer 观察者模式
是的,通过观察者模式,可以即时的更新该参数;
wildangel817 2017-02-13
  • 打赏
  • 举报
回复
引用 2 楼 zhu339111520 的回复:
任何解决不了的问题,都可以通过增加一个中间层的方式来解决,如果不行,那就两层
是的,观察者模式即可解决该问题;
yshuise 2017-02-11
  • 打赏
  • 举报
回复
classA
{
prviate:
    B* b; //改成指针
    C *c;
public:
    void Exapmpe1()
    {
        c.SetParam1(b.GetParam1());
    }
}
wersdfadaf 2017-02-11
  • 打赏
  • 举报
回复
subject-observer 观察者模式
FD_2013 2017-02-10
  • 打赏
  • 举报
回复
任何解决不了的问题,都可以通过增加一个中间层的方式来解决,如果不行,那就两层
ztenv 版主 2017-02-09
  • 打赏
  • 举报
回复
1、接口隔离+工厂 2、通过ipc

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧