Skip to content

Commit 6154eae

Browse files
committed
Merge branch 'master' of github.com:simple-android-framework-exchange/android_design_patterns_analysis
2 parents dc64653 + 0ce8ff1 commit 6154eae

File tree

3 files changed

+120
-3
lines changed

3 files changed

+120
-3
lines changed

command/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# 任务表
2-
| 作者 | 预计完成时间 |
3-
| ------------- |:-------------:|
4-
| [用户名](git地址) | 完成时间 |
2+
| 模式名称 | 作者 | 预计完成时间 |
3+
| ------------- |:-------------:| ------------- |
4+
| 命令模式 | [lijunhuayc](https://github.com/lijunhuayc) | 2015.3.18 |
55

66

77

command/lijunhuayc/readme.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
Android设计模式源码解析之命令模式
2+
====================================
3+
> 本文为 [Android 设计模式源码解析](https://github.com/simple-android-framework-exchange/android_design_patterns_analysis) 中 命令模式 分析
4+
> Android系统版本: 2.3
5+
> 分析者:[lijunhuayc](https://github.com/lijunhuayc),分析状态:未完成,校对者:[Mr.Simple](https://github.com/bboyfeiyu),校对状态:未开始
6+
7+
## 1. 模式介绍
8+
9+
### 模式的定义
10+
`模式的一句话定义`
11+
12+
13+
### 模式的使用场景
14+
15+
16+
17+
## 2. UML类图
18+
`这里是该设计模式的经典UML图`
19+
20+
### 角色介绍
21+
`对UML图中的各个角色进行介绍`
22+
23+
24+
25+
26+
## 3. 模式的简单实现
27+
### 简单实现的介绍
28+
`自己实现一个小型模式案例,通过这个案例让读者了解这个模式的一般应用`
29+
30+
### 实现源码
31+
`上述案例的源码实现`
32+
33+
34+
### 总结
35+
`对上述的简单示例进行总结说明`
36+
37+
38+
39+
40+
## Android源码中的模式实现
41+
`分析源码中的模式实现,列出相关源码,以及使用该模式原因等`
42+
43+
44+
45+
46+
## 4. 杂谈
47+
该模式的优缺点以及自己的一些感悟,非所有项目必须。
48+
49+
50+
51+
`写完相关内容之后到开发群告知管理员,管理员安排相关人员进行审核,审核通过之后即可。`
52+

flyweight/lvtea0105/readme.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,69 @@ Android系统版本: 4.0
66

77
分析者:lvtea0105,分析状态:未完成,校对者:Mr.Simple,校对状态:未开始
88

9+
1. 模式介绍
910

11+
模式的定义
12+
13+
通过共享有效支持大量的细粒度对象,节省系统中重复创建相同内容对象的性能消耗,进而提高应用程序的性能。
14+
享元模式可分为单纯享元模式和复合享元模式。
15+
16+
模式的使用场景
17+
18+
面向对象编程在某些情况下会创建大量的细粒度对象,它们的产生,存储,销毁都会造成资源和性能上的损耗,
19+
可能会在程序运行时形成效率瓶颈,在遇到以下情况时,即可考虑使用享元模式:
20+
(1)一个应用程序使用了大量的对象,耗费大量的内存,降低了系统的效率。
21+
(2)这些对象的状态可以分离出内外两部分。
22+
(3)这些对象按照状态分成很多的组,当把删除对象的外部状态时,可以用相对较少的共享对象取代很多组对象。
23+
(4)应用程序不依赖这些对象的身份,即这些对象是不可分辨的。
24+
在一般的开发中享元模式并不常用,其常常应用于系统底层的开发,以便解决系统的性能问题。
25+
26+
2. UML类图
27+
28+
3. 模式的简单实现
29+
30+
简单实现的介绍
31+
32+
(1)享元模式如何实现共享
33+
34+
将事物的共性共享,同时又保留它的个性。为了做到这点,享元模式中区分了内蕴状态(Internal State)和
35+
外蕴状态(External State)。内蕴状态就是共性,外蕴状态就是个性了。
36+
内蕴状态存储在享元内部,不会随环境改变而变化,是可以共享的;
37+
外蕴状态是不可以共享的,它随环境的改变而变化,通常外蕴状态是由客户端来保持的(因为环境的变化是由客户端引起的)。
38+
39+
40+
单纯享元模式
41+
42+
————所有的享元对象都是可以共享的
43+
44+
抽象享元(Flyweight)角色 :给出一个抽象接口,以规定出所有具体享元角色需要实现的方法,外蕴状态以参数形式传入此方法。
45+
具体享元(ConcreteFlyweight)角色:实现抽象享元角色定义的接口。如果有内蕴状态的话,则必须为内蕴状态提供存储空间。
46+
享元工厂(FlyweightFactory)角色:负责创建和管理享元角色,保证享元对象可以被系统适当地共享。
47+
当客户端调用一个享元对象的时候,享元工厂角色会检查系统中是否已经有一个符合要求的享元对象。
48+
如果已经有了,就提供这个已有的享元对象;如果没有,就创建一个合适的享元对象。
49+
客户端角色:维护所有享元对象的引用,同时还需要存储享元对象所对应的外蕴状态。
50+
51+
52+
复合享元模式
53+
54+
————将一些单纯享元使用合成模式加以复合,形成复合享元对象。复合享元对象本身是不能共享的,
55+
但是它们可以分解成能够进行共享的单纯享元对象。
56+
57+
抽象享元(Flyweight)角色 :给出一个抽象接口,以规定出所有具体享元角色需要实现的方法,外蕴状态以参数形式传入此方法。
58+
具体享元(ConcreteFlyweight)角色:实现抽象享元角色定义的接口。如果有内蕴状态的话,则必须为内蕴状态提供存储空间。
59+
复合享元(ConcreteCompositeFlyweight)角色:复合享元角色所代表的对象是不可以共享的,
60+
但是一个复合享元对象可以分解成能够进行共享的单纯享元对象。
61+
享元工厂(FlyweightFactory)角色:负责创建和管理享元角色,保证享元对象可以被系统适当地共享。
62+
当客户端调用一个享元对象的时候,享元工厂角色会检查系统中是否已经有一个符合要求的享元对象。
63+
如果已经有了,就提供这个已有的享元对象;如果没有,就创建一个合适的享元对象。
64+
客户端角色:维护所有享元对象的引用,同时还需要存储享元对象所对应的外蕴状态。
65+
66+
实现源码
67+
68+
Android源码中的模式实现
69+
70+
4. 优点与缺点
71+
优点————大幅度地降低内存中对象的数量,节省系统资源的开销
72+
73+
缺点————1、为了使对象可以共享,享元模式需要将部分状态外部化,使得系统的逻辑变得复杂。
74+
2、读取状态外部化的享元对象,影响了系统速度,使运行时间有所加长。

0 commit comments

Comments
 (0)