Flyweight Design
来源:互联网 发布:java如何做app 编辑:程序博客网 时间:2024/05/16 14:21
用来支持大量重复的数据的存储,比如很多相同的图元要存储在不同的图片/文档。
1)Flyweight:能对extrinsic state(外在状态)接收 和相应的接口。
public abstract class Flyweight
{
public abstract void Operation(int extrinsicState);
}
2) ConcereteFlyweight:实现Flyweight接口的类
public class ConcreteFlyweight : Flyweight
{
public override void Operation(int extrinsicState)
{
Console.WriteLine("Concrete Flyweight "+extrinsicState);
}
}
3)FlyweightFacotory:(Hashtable/Dictionary)
1.负责创建和管理Flyweight objects
2.确保flyweight能够被正确的共享。如果客户请求一个Flyweight,首先检查存在,如果存在,则返回;否则新创建一个对象。
public class FlyweightFactory
{
private static readonly Hashtable flyweights = new Hashtable();
public static Flyweight GetFlyweight(int key)
{
if (flyweights.Contains(key))
return flyweights[key] as Flyweight;
flyweights.Add(key, new ConcreteFlyweight());
return flyweights[flyweights.Count] as Flyweight;
}
}
4).客户端:只有Flyweight的引用,并且负责保持/存储extrinsicSate(外在的状态信息)。
public class Client1
{
void Call()
{
// Arbitrary extrinsic state
int extrinsicstate = 1;
Flyweight flyweight1 = FlyweightFactory1.GetFlyweight(extrinsicstate);
flyweight1.Operation(extrinsicstate);
extrinsicstate--;
Flyweight flyweight2 = FlyweightFactory1.GetFlyweight(extrinsicstate);
flyweight2.Operation(extrinsicstate);
extrinsicstate += 1;
}
}
- Flyweight Design
- Design Pattern 4-flyweight
- Design Patterns -- Flyweight
- design pattern Flyweight
- Design Pattern: Flyweight 模式
- java-design- flyweight
- Design Pattern - Flyweight(C#)
- design pattern——flyweight
- Design Pattern 7: Flyweight Pattern
- Flyweight Design Pattern 共享元设计模式
- Design Pattern - Structural Patterns - Flyweight Pattern
- Design Pattern: Flyweight(享元模式)
- Flyweight
- Flyweight
- Flyweight
- flyweight
- flyweight
- flyweight
- 职业规划一家谈---何伟平
- Android 中的进程
- Java语言中的修饰符列表
- 硬件设备的监控处理之三——(USB设备的禁用和启用)
- 函数栈2:gcc及llvm中x86机器的栈分配
- Flyweight Design
- android 时间(TimePicker)日期(DatePicker)选择
- webfocus在移动终端上的应用DEMO
- Fedora / Redhat 软件包管理指南
- PKIX path building failed: unable to find valid certification path to requested target
- 硬件设备的监控处理之四——SD卡的禁用和启用
- Linux系统下临时文件TMP清理
- 遍历二叉树
- Linux图形化之流量监控和IO监控