网站制作学习网经验与学习→正文:建造者模式
字体:

建造者模式

经验与学习 2010/10/21 18:11:52  点击:不统计

原载于:文章来源:www.forasp.cn网站制作学习

php设计模式之2-建造者模式.
适配器问题:当创建一个类的实例时非常复杂,操作步骤多,需要简化步骤.

解决方案:假设原类为a,新的类为b,通过b来创建a的实例并设置对应的属性.
举例:
<?php
class forasp_book{
 private $book_name;
 private $author;
 private $pub;
 function set_book_name($name){
 $this->book_name = $name;
 }
 function set_author($author){
 $this->author = $author;
 }
 function set_pub($pub){
 $this->pub=$pub;
 }
 function get_book_info(){
 echo $this->bookname.$this->author.$this->pub;
 }
}
//假如创建一个book的实例转载%77%77%77请%2E%66%6F%72%61%73%70%2E%63%6E注明
$bookobj = new forasp_book();
$bookobj->set_book_name("书名");
$bookobj->set_author("作者");
$bookobj->set_pub("出版社");
$bookobj->get_book_info();//输出书名,作者,出版社.
//采用建造者模式.
class cn_makebook{
protected $_bookobj;
protected $_bookinfo;
function __construct($book_info_array){
$this->_bookinfo = $book_info_array;
}
function makebook(){
  $this->bookobj = new forasp_book();
  $this->bookobj->set_book_name($this->_bookinfo["name"]);
  $this->bookobj->set_author($this->_bookinfo["author"]);
  $this->bookobj->set_pub($this->_bookinfo["pub"]);
 }
function get_book_obj(){
 return $this->bookobj;
 }
}
$bookinfo = array("name"=>"书名","author"=>"作者","pub"=>"出版社");
$makebookobj = new cn_makebook($bookinfo);
$makebookobj->makebook();
$bookobj = $makebookobj->get_book_obj();

$bookobj->get_book_info();
?>
适配器的关键思路:保留原类或者方法,目的是创建原方法的实例,将原类实例化中复杂操作过程放到新的类中,用新类来分解,在新类中创原类的对象,并在新类中返回已经设置好了的对象.
 


<%77w%77%2Ef%6F%72p%73%70%2Ec%6E>

·上一篇:适配器模式 >>    ·下一篇:数据库访问对象模式 >>
推荐文章
最新文章