- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在仔细阅读有关单例的事实(代码味道,而不是模式)之后,我想知道:
如何重构我的代码以摆脱它们?
尽管几乎每个人都同意糟糕的单例是,嗯,很糟糕,但我找不到任何关于如何替换它们的实用建议。要么非常琐碎,要么非常困难。
我能想到一些方法,但所有这些方法似乎都让我的代码变得非常臃肿。
例如,假设我有一个“全局”AppConfig
持有有关产品的许可证信息并描述用户可用的功能的类。
我能想到的:
AppConfig
实例。 (不好:对于已经有基类的情况,例如表单,这是不可能的)setAppConfig
创建一个通用接口(interface)方法。 AppConfigFactory
可以创建AppConfig
实例(坏:仅将问题转移到另一个类)最佳答案
使用依赖注入(inject)和控制反转框架——这可能需要大量的重构。然后,使用构造函数或属性依赖,请求“单例” - 理想情况下,你不要求整个事情,因为根据 Demeter 的原则,它应该只要求它真正需要的东西(在你的情况下是许可证信息)。
我试图区分单例(反模式伪装全局变量)和单例(意味着你只需要其中一个)。真正的单例在程序开始时(或在您的工厂中)创建一次,并传递给需要它的对象。
关于design-patterns - 在实践中如何避免/重构糟糕的单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1198546/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!