码迷,mamicode.com
首页 > 其他好文 > 详细

外观模式/建造者模式

时间:2017-10-29 18:38:40      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:mp3   new   建造者   职责   his   wav   str   简单   接口   

外观模式(门面模式)

通过在必需的逻辑和方法的集合前创建简单的外观接口,来隐藏调用对象的复杂性.

class A
{
   public function song($songList)
   {
	foreach($songList as $val) {
		echo $val . ‘.mp3‘;
	}
   }
}

class B
{
   public function song($songList)
   {
	foreach($songList as $val) {
		echo $val . ‘.wav‘;
	}
   }
}

class Facade
{
    private $a;
    private $b;

    public function create()
    {
	$this->a = new A();
	$this->B = new B();
    }

    public function method($songList)
    {
	$this->a->song($songList);
	$this->b->song($songList);
    }
}

特点:
"在必需的逻辑和方法的集合前"也就意味着外观模式调用了不止一个对象.如果是调用一个对象的多个方法,就成了建造者模式了.

  

建造者模式


定义了处理其他对象的复杂构建的对象设计.

比如如下类:

class Person
{
   private $name, $age;

   public function setName($name){
	$this->name = $name;
   }

   public function setAge($age) {
	$this->age = $name;
   }
}

如果我们要使该类"完整",必须调用setName和setAge.为了体现类的单一职责原则,使类看起来清晰明了.这时候我们可以使用建造者模式.

class Builder
{
    private $person;
    private $configs

    public function __construct($configs)
    {
	$this->person = new Person();
	$this->configs = $configs;
    }

    // 将person的多个方法都放在此方法中执行.
    public function build()
    {
	$this->person->setName($config[‘name‘]);
	$this->person->setAge($config[‘age‘]);
    }

    // 既然是建造者模式,建造完,还是要返回被建造对象,否则也算不上建造者模式.
    public function getPerson()
    {
	return $this->person;
    }
}

// 调用
$build = new Build(array(‘name‘ => ‘php‘, ‘age‘ => 10));
$build->build();
$person = $person->getPerson();

  

 

外观模式/建造者模式

标签:mp3   new   建造者   职责   his   wav   str   简单   接口   

原文地址:http://www.cnblogs.com/itfenqing/p/7750572.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!