<?php
//通过提供对自身共享实例的访问,单例设计模式用于限制特定对象只能被创建一次。
class InventoryConnection{
protected static $_instance = null;
protected $_handle = null;
public static function getInstance(){
if(!self::$_instance instanceof self){
self::$_instance = new self;
}
return self::$_instance;
}
protected function __construct(){
echo 'connect mysql'.PHP_EOL;
}
public function updateQuantity($band, $title, $number){
$query = "UPDATE CDs SET amount=amount+'".intval($number)."'";
$query .= "WHERE band='".addslashes($band)."'";
$query .= "AND title='".addslashes($title)."'";
echo $query.PHP_EOL;
}
}
class CD{
protected $_title = '';
protected $_band = '';
public function __construct($title, $band){
$this->_title = $title;
$this->_band = $band;
}
public function buy(){
$inventory = InventoryConnection::getInstance();
$inventory->updateQuantity($this->_band, $this->_title, -1);
}
}
$boughtCDs = [];
$boughtCDs[] = ['band' => 'fenghuangchuanqi', 'title' => 'zuixuanminzufeng'];
$boughtCDs[] = ['band' => 'TFBOYS', 'title' => 'zuoshouyoushou'];
foreach($boughtCDs as $boughtCD){
$cd = new CD($boughtCD['title'], $boughtCD['band']);
$cd->buy();
}
//当某个对象的实例化在整个代码流中只允许发生一次时,最佳的做法是使用单例设计模式。