Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wushizhenking
CS-Notes
提交
d361bc60
C
CS-Notes
项目概览
wushizhenking
/
CS-Notes
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CS-Notes
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d361bc60
编写于
6月 05, 2018
作者:
C
CyC2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
auto commit
上级
499d369d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
73 addition
and
2 deletion
+73
-2
notes/设计模式.md
notes/设计模式.md
+73
-2
pics/d52270b4-9097-4667-9f18-f405fc661c99.png
pics/d52270b4-9097-4667-9f18-f405fc661c99.png
+0
-0
未找到文件。
notes/设计模式.md
浏览文件 @
d361bc60
...
...
@@ -2631,7 +2631,6 @@ public class SubSystem {
public
class
Facade
{
private
SubSystem
subSystem
=
new
SubSystem
();
public
void
watchMovie
()
{
subSystem
.
turnOnTV
();
subSystem
.
setCD
(
"a movie"
);
...
...
@@ -2657,7 +2656,79 @@ public class Client {
### 意图
利用共享的方式来支持大量的对象,这些对象一部分内部状态是相同的,而另一份状态可以变化。
利用共享的方式来支持大量细粒度的对象,这些对象一部分内部状态是相同的。
### 类图
-
Flyweight:享元对象
-
IntrinsicState:内部状态,相同的项元对象共享
-
ExtrinsicState:外部状态
<div
align=
"center"
>
<img
src=
"../pics//d52270b4-9097-4667-9f18-f405fc661c99.png"
/>
</div><br>
### 实现
```
java
public
interface
Flyweight
{
void
doOperation
(
String
extrinsicState
);
}
```
```
java
public
class
ConcreteFlyweight
implements
Flyweight
{
private
String
intrinsicState
;
public
ConcreteFlyweight
(
String
intrinsicState
)
{
this
.
intrinsicState
=
intrinsicState
;
}
@Override
public
void
doOperation
(
String
extrinsicState
)
{
System
.
out
.
println
(
"Object address: "
+
System
.
identityHashCode
(
this
));
System
.
out
.
println
(
"IntrinsicState: "
+
intrinsicState
);
System
.
out
.
println
(
"ExtrinsicState: "
+
extrinsicState
);
}
}
```
```
java
import
java.util.HashMap
;
public
class
FlyweightFactory
{
private
HashMap
<
String
,
Flyweight
>
flyweights
=
new
HashMap
<>();
Flyweight
getFlyweight
(
String
intrinsicState
)
{
if
(!
flyweights
.
containsKey
(
intrinsicState
))
{
Flyweight
flyweight
=
new
ConcreteFlyweight
(
intrinsicState
);
flyweights
.
put
(
intrinsicState
,
flyweight
);
}
return
flyweights
.
get
(
intrinsicState
);
}
}
```
```
java
public
class
Client
{
public
static
void
main
(
String
[]
args
)
{
FlyweightFactory
factory
=
new
FlyweightFactory
();
Flyweight
flyweight1
=
factory
.
getFlyweight
(
"aa"
);
Flyweight
flyweight2
=
factory
.
getFlyweight
(
"aa"
);
flyweight1
.
doOperation
(
"x"
);
flyweight2
.
doOperation
(
"y"
);
}
}
```
```
html
Object address: 1163157884
IntrinsicState: aa
ExtrinsicState: x
Object address: 1163157884
IntrinsicState: aa
ExtrinsicState: y
```
### JDK
...
...
pics/d52270b4-9097-4667-9f18-f405fc661c99.png
0 → 100644
浏览文件 @
d361bc60
19.0 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录