运用共享技术有效的支持大量细粒度的对象.

应用场景:

A.减少对相同对象的重复创建

UML:

  

示例代码:
如果在工厂中,有用户,我们就直接调用,没有用户,我们就获取.减少对同一uid的user对象的重复创建.

interface FlyWeight
{
public function __construct($uid);
} class User implements FlyWeight
{
protected $uid;
public function __construct($uid)
{
$this->uid = $uid;
} public function __toString()
{
return 'uid' . $this->uid . PHP_EOL;
}
} class Factory
{
public static $users = array(); public static function getUser($uid)
{
if (! array_key_exists($uid, self::$users)) {
self::$users[$uid] = new User($uid);
} return self::$users[$uid];
}
} $user1 = Factory::getUser(1);
$user2 = Factory::getUser(2); $user3 = new User(3); echo($user1);
echo($user2);
echo($user3);

  

最新文章

  1. adb 的使用
  2. C#新手常犯的错误
  3. 76 mkswaP-用于设置交换区
  4. ios启动载入启动图片
  5. 走进 Spring IOC 的世界
  6. bzoj 1208 splay模板题2
  7. java.lang.Class
  8. Android manifest之系统自带的permission
  9. iOS中偏好设置的创建,数据写入与读取
  10. Memcached 笔记与总结(3)安装 php-memcache(windows 系统下)
  11. @jsonignore的作用
  12. ajax调用服务的基本格式
  13. JS响应事件整理
  14. ThinkPHP框架视图详细介绍 View 视图--模板(九)
  15. Java连接远程Mysql过程中遇到的各种问题
  16. Spring Boot (二)集成Jsp与生产环境部署
  17. 基于ajax实现的登录
  18. NET Core微服务之路:实战SkyWalking+Exceptionless体验生产环境下的追踪系统
  19. 同源策略与CORS
  20. python数据类型及字符编码

热门文章

  1. 架构妄想:AJAX + REST
  2. hdu 5167(dfs)
  3. 转怎么让VI支持中文显示
  4. [BZOJ1076][SCOI2008]奖励关 状压dp
  5. 浅谈replace()
  6. mysql 保留点
  7. Codeforces 801 A.Vicious Keyboard & Jxnu Group Programming Ladder Tournament 2017江西师大新生赛 L1-2.叶神的字符串
  8. qt资源下载网站
  9. 在ubuntu下面为php添加redis扩展
  10. 10、Django实战第10天:找回密码