html5中文学习网

您的位置: 首页 > 网络编程 > PHP编程 » 正文

PHP设计模式之工厂模式_PHP教程_编程技术

[ ] 已经帮助:人解决问题

工厂设计模式: 提供获取某个对象的新实例的一个接口, 同时使调用代码避免确定实际实例化基类的步骤。JuSHTML5中文学习网 - HTML5先行者学习网

  1. <?php   
  2. //基础标准CD类   
  3. class CD {   
  4.        
  5.     public $tracks = array();   
  6.     public $band   = '';   
  7.     public $title  = '';   
  8.        
  9.     public function __construct() {}   
  10.        
  11.     public function setTitle($title) {   
  12.         $this->title    = $title;   
  13.     }   
  14.        
  15.     public function setBand($band) {   
  16.         $this->band     = $band;   
  17.     }   
  18.        
  19.     public function addTrack($track) {   
  20.         $this->tracks[] = $track;   
  21.     }   
  22. }   
  23.    
  24. //增强型CD类, 与标准CD的唯一不同是写至CD的第一个track是数据track("DATA TRACK")   
  25. class enhadcedCD {   
  26.     public $tracks = array();   
  27.     public $band   = '';   
  28.     public $title  = '';   
  29.    
  30.     public function __construct() {   
  31.         $this->tracks   = "DATA TRACK";   
  32.     }   
  33.        
  34.     public function setTitle($title) {   
  35.         $this->title    = $title;   
  36.     }   
  37.        
  38.     public function setBand($band) {   
  39.         $this->band     = $band;   
  40.     }   
  41.        
  42.     public function addTrack($track) {   
  43.         $this->tracks[] = $track;   
  44.     }   
  45. }   
  46.    
  47. //CD工厂类,实现对以上两个类具体实例化操作   
  48. class CDFactory {   
  49.        
  50.     public static function create($type) {   
  51.         $class = strtolower($type) . "CD";   
  52.            
  53.         return new $class;   
  54.     }   
  55. }   
  56.    
  57. //实例操作   
  58. $type = "enhadced";   
  59.    
  60. $cd   = CDFactory::create($type);   
  61.    
  62. $tracksFromExternalSource = array("What It Means""Brr""Goodbye");   
  63.    
  64. $cd->setBand("Never Again");   
  65. $cd->setTitle("Waste of a Rib");   
  66. foreach ($tracksFromExternalSource as $track) {   
  67.     $cd->addTrack($track);   
  68. }   
  69. ?> 

 数据库脚本请参照:http://www.cxybl.com/html/wlbc/Php/2011_1126_9458.htmlJuSHTML5中文学习网 - HTML5先行者学习网

JuSHTML5中文学习网 - HTML5先行者学习网
JuSHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助