技术开发 频道

PHP养成7个面向对象的好习惯

   继承 是一个很难入手的习惯,因为构建正确继承模型的分析通常需要花费大量时间。反过来,使用 Ctrl+C 组合键和 Ctrl+V 组合键构建新实现只需几秒钟。但是省下的这部分时间通常会在维护阶段迅速抵销掉,因为应用程序实际上将花费大量进行维护。

  好习惯:利用继承

  在清单 13 中,新 Employee 类将扩展 Person 类。它现在将继承所有通用方法并且不重新实现这些方法。此外,清单 13 显示了抽象方法的用法,演示如何将基本功能放入基类中以及如何阻止实现类使用特定函数。


  清单 13. 利用继承的好习惯

<?php
abstract class Person
{
    
private $givenName;
    
private $familyName;
    
    
public function setGivenName($gn)
    {
        
$this->givenName = $gn;
    }
    
    
public function getGivenName()
    {
        
return $this->givenName;
    }
    
    
public function setFamilyName($fn)
    {
        
$this->familyName = $fn;
    }
    
    
public function getFamilyName()
    {
        
return $this->familyName;
    }
    
    
public function sayHello()
    {
        
echo("Hello, I am ");
        
$this->introduceSelf();
    }
    
    
abstract public function introduceSelf();
    
}

class Employee extends Person
{
    
private $role;
    
    
public function setRole($r)
    {
        
$this->role = $r;
    }
    
    
public function getRole()
    {
        
return $this->role;
    }
    
    
public function introduceSelf()
    {
        
echo($this->getRole() . " " . $this->getGivenName() . " " .
            
$this->getFamilyName());
    }
}
?>

  考虑使用模式

  设计模式指对象和方法的常见交互,并且时间证明它可以解决某些问题。当您考虑使用设计模式时,您就需要了解类之间如何进行交互。它是构建类及其交互操作的简单方法,无需重蹈他人的覆辙,并从经过证明的设计中获益。

  坏习惯:一次考虑一个对象

  实际上没有适当的代码示例可以演示如何考虑使用模式(尽管有丰富的优秀示例可以显示模式实现)。但是,一般而言,您知道在满足以下条件时一次只能考虑一个对象:

  不会提前设计对象模型。
  开始编写单一方法的实现,而无需去掉大部分模型。
  在交谈中不使用设计模式名而宁愿谈论实现。
  好习惯:同时添加模式中形成的对象

  一般而言,当您在执行以下操作时就是在考虑使用模式:

  提前构建类及其交互操作。
   根据模式套用类。
  使用模式名,如 Factory、Singleton 和 Facade。
  去掉大部分模型,然后开始添加实现。

0
相关文章