快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
tUtils::createAddressFormatter($type);

     return $formatter->format($address->getAddressLine1(),
       $address->getAddressLine2(),
      $address- >getCity(), $address->getState(),
      $address- >getPostalCode(),
      $address->getCountry());
  }

  private static function createAddressFormatter ($type)
  {
    if ($type == "inline") {
      $formatter = new InlineAddressFormatter();
     } else if ($type == "multiline") {
       $formatter = new MultilineAddressFormatter();
    } else {
      $formatter = new NullAddressFormatter();
    }
    return $formatter;
  }
}
$addr = new Address();
$addr->setAddressLine1("123 Any St.");
$addr->setAddressLine2("Ste 200");
$addr- >setCity("Anytown");
$addr->setState ("AY");
$addr->setPostalCode("55555- 0000");
$addr->setCountry("US");
echo (AddressFormatUtils::formatAddress("multiline", $addr));
echo("\n");
echo(AddressFormatUtils::formatAddress ("inline", $addr));
echo("\n");
? >

当然,缺点是只要使用模式,通常就意味着工件(类、文件 )的数量会增加。但是,通过减少每个类中的维护可以弥补这个缺点,甚至在获 得正确的可重用性时反而可以减少工件量。

您是橡皮;我是胶水

具有高度内聚力的 OO 设计被集中并组织到相关模块中。了解 “关注点 ” 对于决定如何紧密地联系函数和类十分重要。

坏习惯:降低内 聚力

当设计的内聚力较低 时,它就不能良好地组织类和方法。意大利面 条式代码(spaghetti code)一词通常用于描述捆绑在一起并且具有低内聚力的 类和方法。清单 10 提供了意大利面条式代码的示例。相对通用的 Utils 类将 使用许多不同对象并且有许多依赖关系。它执行很多操作,因而很难实现重用。

清单 10. 降低内聚力的坏习惯

<?php
class Utils
{
  public static function formatAddress ($formatType, $address1,
    $address2, $city, $state)
  {
    return "some address string";
  }

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

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

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

好习惯: 利用高内聚力

高内聚力 指将相互关联的类和方法分组在一起。如果方法 和类都具有高度的内聚力,则可以轻松地分解整个组而不影响设计。具有高内聚 力的设计将提供降低耦合的机会。清单 11 显示了被较好组织到类中的两个方法 。AddressUtils 类将包含用于处理 Address 类的方法,显示了与地址相关的方 法之间的高度内聚力。同样地,PersonUtils 将包含专门处理 Person 对象的方 法。这两个拥有高度内聚力方法的新类的耦合性都很低,因为可以完全独立地使 用。

清单 11. 高内聚力的好习惯

<?php
class AddressUtils
{
  public static function formatAdd

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号