您的位置:首页 > 编程语言 > PHP开发

面向对象的php之类解耦的好处

2015-10-06 15:25 686 查看
为什么要解耦呢?

举个例子:

getScore($student){

}

假如一个课程类,里面有一个获取学生分数的的方法getScore()。该方法要求传入一学号。

在这个方法中,就跟学生类student耦合了。

因为在getScore方法中,需要$student->getNum();

假如现在学生类被类作者改变了,取消了getNum()这个方法,那么你这个方法,就需要重新写了。

当开发人员只有很少人时,这个耦合带来的影响是比较小的,因为我们大概都知道在哪里用了,改起来也不麻烦。

但是当项目比较大,开发人员多起来的时候,改动一个,几乎就需要改动很多类了。

解耦比较好的方法,就是需要什么,就要求什么:

getScore($StudentId){

}

这样,当学生类变动的时候,就不需要担心自己的类需要改变了。

 

这里有出现了几个问题:

1、  学生类不符合开闭原则,如果学生类符合开闭原则,那么我们这个耦合关系也没问题。

需求是经常变更的,在开发项目过程中,完全做到开闭原则是不可能的。很多项目在开发过程中,也是需要不断地重构。

 

2、  如果所有类都解耦,那么是否是一个类修改了,那么其他地方都无需改变了呢?

有些改动是不影响其他地方,比如getNum()方法里面加了一个判断,这样只是更改了这个方法,在地方来说,依然调用的是getNum(),所以是不会改变的。

但是很多时候,其他地方也是需要改动的。不过这个时候,改动的,只是场景方法中而已。比如现在删除了学生类中的getNum()方法。在getScore($StudentId)里面就无需改变的。但是在场景中,还需要改变获取学号的方法,然后再传进去这个getScore中。

 

3、  像上面的getScore方法,如果在方法里面修改获取学号,也只需要修改一次,但是如果解耦的话,就需要所有场景都需要修改。

的确是这样的。但是如果类能够解耦的话,这个类的开发人员无需了解另外一个类具体功能功能是什么。当有多个人同时开发的时候,两个类就能并行开发,而无需担心需要哪个类先开发完才能继续开发下一个类。

 

在像c++,java语言中,类解耦能够使类不需要再重编译。要知道,中大型项目编译起来,往往是几个小时(甚至是几天)。所以类解耦,能够让类无需重编译,减少编译时间。

 

综合起来就有以下优点:

1、  在c++,java这种语言中,能够减少编译时间

2、  各个类能够同时开发
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: