当前位置:  开发笔记 > 编程语言 > 正文

我应该如何重构我的代码以删除不必要的单身?

如何解决《我应该如何重构我的代码以删除不必要的单身?》经验,为你挑选了1个好方法。

当我第一次看到反单身评论时,我很困惑.我在最近的一些项目中使用了单例模式,并且它运行得很漂亮.事实上,我已经使用了很多次.

现在,在遇到一些问题之后,阅读这个问题,尤其是这篇博文,我理解了我带给世界的邪恶.

那么:我如何从现有代码中删除单例?

例如:
在零售店管理程序中,我使用了MVC模式.我的Model对象描述了商店,用户界面是View,我有一组控制器,它们充当两者之间的联络.大.除了我将Store变成一个单独的(因为应用程序一次只管理一个商店),我还把我的大部分Controller类变成了单例(一个mainWindow,一个menuBar,一个productEditor ......).现在,我的大多数Controller类都可以像这样访问其他单例:

Store managedStore = Store::getInstance();
managedStore.doSomething();
managedStore.doSomethingElse();
//etc.

我应该改为:

    创建每个对象的一个​​实例,并将引用传递给需要访问它们的每个对象?

    使用全局?

    别的什么?

Globals仍然很糟糕,但至少他们不会假装.

我看到#1迅速导致可怕的膨胀构造函数调用:

someVar = SomeControllerClass(managedStore, menuBar, editor, sasquatch, ...)

还有其他人经历过这个吗?如果不是全局变量或单个变量,那么为多个单独的类访问公共变量的OO方法是什么?



1> matt b..:

依赖注入是你的朋友.

在优秀的Google测试博客上查看这些帖子:

单身人士是病态的骗子(但如果你问这个问题,你可能已经理解了这一点)

关于依赖注入的讨论

编写可测试代码的指南

希望有人为C++世界制作了一个DI框架/容器?看起来谷歌发布了一个C++测试框架和一个C++模拟框架,可能会帮助你.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有