如何才能最好地将两个类分离,但仍然依赖彼此?
我有类型提示的构造函数参数:
public function __construct(\namespace\Interface1 $class1,
\namespace\Interface2 $class2,
\other\namespace\Abstract1 $class3){
但这是紧密耦合的,比如说:
new \namespace\Class1();
欢迎任何其他方法。
答案 0 :(得分:1)
使用接口意味着您与实现分离。
您不能使用其他组件(即依赖项)而不至少与某些事物耦合。问题是如何最小化这种耦合:
最后,这是关于选择涉及较少耦合的解决方案。
另一种方法是使用事件:您的类可以引发事件,并且依赖项会侦听这些事件。这样,您的类只耦合到EventManager的接口。
但是事件解决方案并不适合所有用例:您无法保证任何人实际注册到该事件,并且实际上在该事件上做了一些事情。如果你刚刚调用了一个方法,就无法获得结果。
结论:使用像你这样的界面很好,这里没有问题。:)