PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-创建相互依赖的对象大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个设计问题,无法找到一个干净且不错的解决方案.我正在用PHP开发,但我相信这可能会以任何语言发生.我的基本问题是,我有两个在某种程度上具有相互依赖的循环关系的对象.这意味着我有一个实现Facade模式的类(称为F),其中包含一个(类B)对象,该对象本身需要创建一个A类对象.类A的构造函数本身需要创建立面F =>我有对象的循环依赖.

我相信我无解决循环的相互依赖关系(对象基本上使用状态模式通过循环实现了有限状态机),所以我正在寻找一种干净的解决方案.我本人想出了两种可能的解决方案,但我认为这两种方法都不是特别优雅:

>让类A实现setFacade(F $facacE)方法,并从构造函数删除整个外观,并在A和外观创建之后进行设置.类A的对象不能在没有立面的情况下工作,因此这实际上会创建一个类A的对象,该对象在调用setFacade之前无法执行任何操作,这将减少封装并允许在对象运行时替换立面.不喜欢
>实现类似Promise的东西,而不是传递给外观,该外观将在以后创建外观时立即解析给外观.我不想介绍这个额外的间接层,尤其是因为我没有比A中处理商务逻辑的方法更能实际解决诺言的好地方,这可能a)产生可怕的错误,(更重要的是)b)需要无论何时调用商务逻辑,我都要检查是否已经解决了诺言,或者现在是否需要解决诺言.在我眼里那真是糟糕的设计.

因此,如果有人可以提出更好的解决方案,或者可以通过一个很好的论据支持我可能的解决方案之一,我将非常高兴.

解决方法:

循环依赖是一种恶意的邪恶行为,因此必须不惜一切代价避免使用循环依赖,即使这意味着完全重新虑您的设计并浪费大量时间. (从维护程序员的角度讲.在您仍然需要进行一些较差的修改之后,就必须这样做.)

有几种查看重构代码方法,但是我得到的简短的非特定建议是,任何导致循环依赖的对象都应将有问题的属性,方法等拆分为一个新对象.然后,两个原始依赖关系中的每一个都将依赖于此第三个对象,而不是彼此依赖. (并确保第三个对象不依赖于原始对象.)

即使这意味着具有重复或相似的代码,它也仍然比循环依赖要好(但即使采用适当的前期设计也应避免这种情况).

大佬总结

以上是大佬教程为你收集整理的php-创建相互依赖的对象全部内容,希望文章能够帮你解决php-创建相互依赖的对象所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: