php实现享元模式,php设计模式 flyweight (享元模式)
25種php設計模式,你全都知道嗎?下面用代碼介紹享元模式(flyweight模式)<?php
/**
*?享元模式
*
*?運用享元技術有效的支持大量細粒度的對象
*/
class?CD?{
private?$_title?=?null;
private?$_artist?=?null;
public?function?setTitle($title)?{
$this->_title?=?$title;
}
public?function?getTitle()?{
return?$this->_title;
}
public?function?setArtist($artist)?{
$this->_artist?=?$artist;
}
public?function?getArtist($artist)?{
return?$this->_artist;
}
}
class?Artist?{
private?$_name;
public?function?__construct($name)?{
echo?"construct?"?.?$name?.?"
";
$this->_name?=?$name;
}
public?function?getName()?{
return?$this->_name;
}
}
class?ArtistFactory?{
private?$_artists?=?array();
public?function?getArtist($name)?{
if?(isset($this->_artists[$name]))?{
return?$this->_artists[$name];
}?else?{
$objArtist?=?new?Artist($name);
$this->_artists[$name]?=?$objArtist;
return?$objArtist;
}
}
}
$objArtistFactory?=?new?ArtistFactory();
$objCD1?=?new?CD();
$objCD1->setTitle("title1");
$objCD1->setArtist($objArtistFactory->getArtist('artist1'));
$objCD2?=?new?CD();
$objCD2->setTitle("title2");
$objCD2->setArtist($objArtistFactory->getArtist('artist2'));
$objCD3?=?new?CD();
$objCD3->setTitle("title3");
$objCD3->setArtist($objArtistFactory->getArtist('artist1'));
其他相關設計模式:
轉載隨意,但請附上文章地址:-)
總結
以上是生活随笔為你收集整理的php实现享元模式,php设计模式 flyweight (享元模式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab plot subplot,
- 下一篇: php use include区别,ph