这章最主要的就是几个面对对象的概念:
1、职责:在面对对象代码中,客户端不需要考虑具体细节的实现,只要知道使用哪个接口能够完成功能即可。具体的细节实现由对象实现,而不是由客户端代码负责。
2、内聚:内聚指的是一个模块内部各个成分之间互相关联的度量(如一个类将实现某个功能的相关方法集中起来,这些方法可以共享处理的数据,当改变其中一个方法中的数据时,这种改变可以很快反应到其余的方法中。而面对过程编程把相关的方法分开,导致处理数据的代码在多个方法中重复出现)。
3、耦合:系统的各个部分代码紧密的绑在一起时,就会产生耦合,这在面对对象和面对过程编码中都会出现。当我们改变系统中某个组件时,往往其余的组件也需要进行改变。被迫该边的组件越多,该系统的耦合性就越高(注意:需要将耦合和内聚区分开来)。
4、正交:指将职责相关的组件紧紧的结合在一起,与外部环境隔离开来,保持独立。正交性主张重用组件,期望不需要进行任何特殊的配置即可把一个组件插入到新系统中。
5、多态:多态,又被称为‘类切换’,是面向对象的三大特性之一。它指的是在一个公用接口后面维护多个实现。然后根据环境的不同来返回不同的实现。
//创建一个生成柜子的接口
class cabinet
{
public function getcabinet($name)
{
if($name == "衣服"){
$return = new warborde();
}else if($name == "书"){
$return = new bookcase();
}
return $return
}
}
class warborde
{
//some code about warborde
}
class bookcase
{
//some code about bookcase
}
//现在我想要一个书柜
$cabinet = new cabinet();
$getbook = $cabinet->getcabinet("书");
6、封装:封装,面对对象三大特性之一。封装指的是将于只用于类内部的方法和属性使用protect或者private隐藏起来,使客户端无法直接操控这些属性和功能,只能通过给出的特定接口来获取特定数据。
7、进行代码设计时的四大‘路标’:
A、代码重复:重复是代码中最常见的问题,它通常意味这紧密耦合,在编写代码时,需要特别注意重复的代码,想一想它们是不是有必要合并在一起。
B、类知道的太多:当我们在使用全局变量或者允许一个独立的类知道它领域之外的内容时,我们就会把这个类绑定到外部环境中,使这个类很难被复用,进而增加代码的耦合性
C、万能的类:我们常常会使用一个类去完成太多的功能。当一个类的职责过多时,那么在创建子类时很容易出现问题。
D、条件语句:当你的代码中出现过多的条件语句时,你就该考虑是否需要将这个类拆散成为一个或者多个类。
8、UML类图:使用一个图形化的语法来描述面对对象系统。这是之后内容的基础。