S7:享元模式 Flyweight
2024-08-23 11:30:00
运用共享技术有效的支持大量细粒度的对象.
应用场景:
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);
最新文章
- adb 的使用
- C#新手常犯的错误
- 76 mkswaP-用于设置交换区
- ios启动载入启动图片
- 走进 Spring IOC 的世界
- bzoj 1208 splay模板题2
- java.lang.Class
- Android manifest之系统自带的permission
- iOS中偏好设置的创建,数据写入与读取
- Memcached 笔记与总结(3)安装 php-memcache(windows 系统下)
- @jsonignore的作用
- ajax调用服务的基本格式
- JS响应事件整理
- ThinkPHP框架视图详细介绍 View 视图--模板(九)
- Java连接远程Mysql过程中遇到的各种问题
- Spring Boot (二)集成Jsp与生产环境部署
- 基于ajax实现的登录
- NET Core微服务之路:实战SkyWalking+Exceptionless体验生产环境下的追踪系统
- 同源策略与CORS
- python数据类型及字符编码
热门文章
- 架构妄想:AJAX + REST
- hdu 5167(dfs)
- 转怎么让VI支持中文显示
- [BZOJ1076][SCOI2008]奖励关 状压dp
- 浅谈replace()
- mysql 保留点
- Codeforces 801 A.Vicious Keyboard &; Jxnu Group Programming Ladder Tournament 2017江西师大新生赛 L1-2.叶神的字符串
- qt资源下载网站
- 在ubuntu下面为php添加redis扩展
- 10、Django实战第10天:找回密码