|
简介:
享元模式,属于结构型的设计模式。运用共享技术有效地支持大量细粒度的对象。
适用场景:
具有相同抽象但是细节不同的场景中。
优点:
把公共的部分分离为抽象,细节依赖于抽象,符合依赖倒转原则。
缺点:
增加复杂性。
代码:
- //用户类
- class User
- {
- private $name;
- function __construct($name)
- {
- $this->name = $name;
- }
- public function getName()
- {
- return $this->name;
- }
- }
- //定义一个抽象的创建网站的抽象类
- abstract class WebSite
- {
- abstract public function use(User $user);
- }
- // 具体网站类
- class ConcreteWebSite extends WebSite
- {
- private $name = '';
- function __construct($name)
- {
- $this->name = $name;
- }
- public function use(User $user)
- {
- echo "{$user->getName()}使用我们开发的{$this->name}" . PHP_EOL;
- }
- }
- //网站工厂
- class WebSiteFactory
- {
- private $flyweights = [];
- public function getWebSiteGategory($key)
- {
- if (empty($this->flyweights[$key])) {
- $this->flyweights[$key] = new ConcreteWebSite($key);
- }
- return $this->flyweights[$key];
- }
- }
- $f = new WebSiteFactory();
- $fx = $f->getWebSiteGategory('电商网站 ');
- $fx->use(new User('客户A'));
- $fy = $f->getWebSiteGategory('电商网站 ');
- $fy->use(new User('客户B'));
- $fl = $f->getWebSiteGategory('资讯网站 ');
- $fl->use(new User('客户C'));
- $fm = $f->getWebSiteGategory('资讯网站 ');
- $fm->use(new User('客户D'));
复制代码 来源:https://www.cnblogs.com/phpphp/p/17067999.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|