技术开发 频道

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

  利用最弱的链接

  将模块松散耦合 在一起是件好事情;它是允许您封装更改的属性之一。另外两个习惯 — “保持谨慎” 和 “避免看到美杜莎” — 可帮助您构建松散耦合的模块。要实现松散耦合的类,可通过养成降低类依赖关系的习惯实现。

  坏习惯:紧密耦合

  在清单 8 中,降低依赖关系并不是必须降低使用对象的客户机的依赖关系。相反,该示例将演示如何降低与正确类的依赖关系并最小化这种依赖关系。


  清单 8. Address 中紧密耦合的坏习惯

<?php

require_once "./AddressFormatters.php";

class Address
{
    
private $addressLine1;
    
private $addressLine2;
    
private $city;
    
private $state; // or province...
    private $postalCode;
    
private $country;

    
public function setAddressLine1($line1)
    {
        
$this->addressLine1 = $line1;
    }

        
/* accessors, etc... */

    
public function getCountry()
    {
        
return $this->country;
    }

    
public function format($type)
    {
        
if ($type == "inline") {
            
$formatter = new InlineAddressFormatter();
        }
else if ($type == "multiline") {
            
$formatter = new MultilineAddressFormatter();
        }
else {
            
$formatter = new NullAddressFormatter();
        }
        
return $formatter->format($this->getAddressLine1(),
            
$this->getAddressLine2(),
            
$this->getCity(), $this->getState(), $this->getPostalCode(),
            
$this->getCountry());
    }
}

$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($addr->format("multiline"));
echo("\n");

echo($addr->format("inline"));
echo("\n");

?>


 

0
相关文章