PDA

View Full Version : سوال: PHP 5 Advanced OOP and Design Patterns



Dead Space
شنبه 02 بهمن 1389, 10:16 صبح
سلام به دوستان عزیز
ببخشید سوالی داشتم از خدمتتون
منم متاسفانه زیاد متوجه الگوهای برنامه نویسی شی گرا در php نمیشم و یه جوری درکش برام سخته مخصوصا وقتی کدهاش رو میبینم
کسی میتونه به طور خلاصه و مفهموم دار الگوهای زیر رو برای من تعریف کنه:
الگوی Observer
الگوی Singleton
این قطعه کد برای الگوی Observer هستش که من دقیق متوجه عملکرد نمیشم

class ExchangeRate {
static private $instance = NULL;
private $observers = array();
private $exchange_rate;


private function ExchangeRate() {
}


static public function getInstance() {
if (self::$instance == NULL) {
self::$instance = new ExchangeRate();
}
return self::$instance;
}


public function getExchangeRate() {
return $this->$exchange_rate;
}


public function setExchangeRate($new_rate) {
$this->$exchange_rate = $new_rate;
$this->notifyObservers();
}


public function registerObserver($obj) {
$this->observers[] = $obj;
}


function notifyObservers() {
foreach($this->observers as $obj) {
$obj->notify($this);
}
}
}


class ProductItem implements Observer {
public function __construct() {
ExchangeRate::getInstance()->registerObserver($this);
}


public function notify($obj) {
if ($obj instanceof ExchangeRate) {
// Update exchange rate data
print "Received update!\n";
}
}
}


$product1 = new ProductItem();
$product2 = new ProductItem();


ExchangeRate::getInstance()->setExchangeRate(4.5);
مثلا کد
self::$instance = new ExchangeRate();
الا داره چیکار می کنه وقتی داخل { }ExchangeRate هیچ کدی زده نشده ؟
یا اینکه کد
exchangeRate::getInstance()->registerObserver($this); که مربوط به سازنده کلاس ProductItem هستش الان دقیقا داره چیکار میکنه ؟
--------
و سوال آخر هم درباره Overloading در زبان php هستش کاربرد Ovdrloading بیشتر در کجا هستش ؟
با تشکر