快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
ress ($formatType, $address1,
    $address2, $city, $state)
  {
    return "some address string";
  }

  public static function parseAddress($formatType, $val)
  {
    // real implementation would set values, etc...
    return new Address();
  }

}
class PersonUtils
{
  public static function formatPersonName($formatType, $givenName,
    $familyName)
  {
    return "some person name";
  }

  public static function parsePersonName($formatType, $val)
  {
    // real implementation would set values, etc...
    return new PersonName();
  }
}
? >

限制传播

我经常对我所在的软件团队(我在其中担 任技术主管或架构师)的成员提起,OO 语言最大的敌人是复制和粘贴操作。当 在缺少预先 OO 设计的情况下使用时,没有任何操作会像在类之间复制代码那样 具有破坏性。无论何时,如果想将代码从一个类复制到下一个类中,请停下来并 考虑如何使用类层次结构利用类似功能或相同功能。在大多数情况下,使用优秀 设计后,您将会发现完全没有必要复制代码。

坏习惯:不使用类层次结 构

清单 12 显示了部分类的简单示例。它们从重复的字段和方法开始 — 从长远来看,不利于应用程序作出更改。如果 Person 类中有缺陷,则 Employee 类中也很可能有一个缺陷,因为看上去似乎实现是在两个类之间复制 的。

清单 12. 不使用层次结构的坏习惯

<?php
class Person
{
  private $givenName;
  private $familyName;
}
class Employee
{
  private $givenName;
  private $familyName;
}
? >

继承 是一个很难入手的习惯,因为构建正确继承模型的分 析通常需要花费大量时间。反过来,使用 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());
  }
}
? >

考虑使用模式

设计模式指对象和方法的常见交互, 并且时间证明它可以解决某些问题。当您考虑使用设计模式时,您就需要了解类 之间如何进

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号