用途
享元模式 (Flyweight)
运用共享技术有效地支持大量细粒度的对象。
享元模式是一种结构型模式。
结构
aaarticlea/png;base64,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X167du3Lly/Fzvzctm3bxIkTJ06cuHnzZhxZsGDBsGHDcAT7R0REBD+dwl+8sH9cuXJFXV2drurw4cNWVlaPHz+ePXt2cXExHUEIVVdXz58//9GjRwhRV69ewWecOOGnR49iEELXrl1TU1PDlezcuXMin1mzZr1//37hwoVDhw6lI3gje319/S+//JKOaGlpOTg44I1nBf3D399/06ZNuGYtLS1cCf3sR0tLi96Bpba29s8//3x4PwJRnPLy8uvXr8+cObOoqEjwvQL/ALogb968mThx4ps3b9atW2dpaRkWFrZy5Ur+Z2Trn39cu3Zt3Lhxgp/6ERERixYtevr0KYtV/4lYWVl5+/btSZMmpaWlGRkZTRQgLS2NLkUH8bUTERGxfPlygiDWrFlDr+ZH54SGhiKErl+/3rt37wkTJuCIm5ubnp4ernDt2rU4U1dnD36SQUcmTpy4dOlSbC0mJibm5uY5OTn1radIE2NjoZwDBw4Ifo9au3ZtcHCwvb39gAEDcOarV69wzt27d5csWcLhcNatWxcUFOTh4SH4YukRY3l5edOmTZs4ceLECeNPnDh+7969xYsXs9lsRDBNTQxxMo5MnTrV29v7w9tNEQhRmzdvHjJkyMSJE1VUVPCbfND0wMQJ4wUjojlmZma45kWLFtXV1T8FKS4u9vb2Fowg8A+AT8f5h4uLi1AEU1NTs3Pnzn///dfPz8/Pz+/06dOamprl5eULFizYsmWLn5/fnTt3sH/89ttv6/ls3bq1vLwc+8fZs2d//fVXukJdXd0d27c+iI784osvCgsL6yM7diCEKioqhg0bFh4e7uXlZWxs7MdHR0cH31x++eWX2traXbt2nTp1Ch+ysbEZOHBgQUHBwoUL1dXVcfDChQubN29OSUnR19efP3++n5+fv78/k8lctGjRsWPHcDNo//D29jYyMoqIiKirq9u9e7ezszOu5MyZM1u2bCktLVVRUTl69CguVV1dLS8vf+tmCKJIRPFiY+72799faEs58A+gC1JVVeXn57dt2zZ5efnx48fv27dP8n9R8f5BshHFFfWPa9eu/fjjj6JPRHr06JHyJH7D+jWrV6+mL+3t27c/fPjw2rVr+vr6dHD//v34mu3fv/+6detcXV3xJZafn0/nGBgY+Pn5Xb9+fei331y84OHndyknJ+fQoUOrVq0qKirauHHj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" alt="" height="309" width="552" />
图-享元模式结构图
Flyweight : 它是所有具体享元类的超类或接口,通过这个接口,Flyweight 可以接受并作用于外部状态。
abstract class Flyweight {
public abstract void Operation(int extrinsicstates);
}
ConcreteFlyweight : 是继承 Flyweight 超类或实现 Flyweight 接口,并为内部状态增加存储空间。
class ConcreteFlyweight extends Flyweight {
@Override
public void Operation(int extrinsicstates) {
System.out.println("共享的Flyweight : " + extrinsicstates);
}
}
UnsharedConcreteFlyweight : 指那些不需要共享的 Flyweight 子类,因为 Flyweight 接口共享成为可能,但它并不强制共享。
class UnsharedConcreteFlyweight extends Flyweight {
@Override
public void Operation(int extrinsicstates) {
System.out.println("不共享的Flyweight : " + extrinsicstates);
}
}
FlywightFactory :是一个享元工厂,用来创建并管理 Flyweight 对象。它主要是用来确保合理地共享 Flyweight ,当用户请求一个 Flyweight 时, FlyweightFactory 对象提供一个已创建的实例或创建一个(如果对象不存在的话)。
class FlywightFactory {
private Hashtable<String, Flyweight> flyweights = new Hashtable<String, Flyweight>();
public FlywightFactory() {
flyweights.put("X", new ConcreteFlyweight());
flyweights.put("Y", new ConcreteFlyweight());
flyweights.put("Z", new ConcreteFlyweight());
}
public Flyweight GetFlyweight(String key) {
return ((Flyweight)flyweights.get(key));
}
}
测试代码
public class FlyweightPattern {
public static void main(String[] args) {
int extrinsicstates = 1;
FlywightFactory factory = new FlywightFactory();
Flyweight fx = factory.GetFlyweight("X");
fx.Operation(extrinsicstates);
Flyweight fy = factory.GetFlyweight("Y");
fy.Operation(++extrinsicstates);
Flyweight fz = factory.GetFlyweight("Z");
fz.Operation(++extrinsicstates);
Flyweight uf = new UnsharedConcreteFlyweight();
uf.Operation(++extrinsicstates);
}
}
运行结果
共享的Flyweight : 1
共享的Flyweight : 2
共享的Flyweight : 3
不共享的Flyweight : 4
推荐
本文属于 JAVA设计模式系列 。
参考资料
《大话设计模式》
《HeadFirst设计模式》
- 【设计模式】Java设计模式 - 享元模式
Java设计模式 - 享元模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一起记录分享自己 ...
- java设计模式——享元模式
一. 定义与类型 定义:提供了减少对象数量从而改善应用所需的对象结构的方式,运用共享技术有效地支持大量细粒度的对象 类型:结构性 二. 使用场景 (1) 常常应用于系统底层的开发,以便解决系统的性能 ...
- Java设计模式-享元模式(Flyweight)
享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用. FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查 ...
- java设计模式---享元模式
享元模式 顾名思义:共享元对象.如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用创建新的对象. 享元模式是为数不多的.只为提升系统性能而生的设计模式.它的主要作用就 ...
- Java设计模式—享元模式
享元模式:是池技术的重要实现方式. 定义如下: 使用共享对象可有效地支持大量的细粒度的对象. 个人理解:享元模式利用共享对象的技术,解决了Java中内存溢出的问题. 享元模式的定义为我们提出了两个要求 ...
- 8. 星际争霸之php设计模式--享元模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- C++设计模式——享元模式
本文版权归果冻说所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.如果这篇文章对你有帮助,你可以请我喝杯咖啡. » 本文链接:http:// ...
- [工作中的设计模式]享元模式模式FlyWeight
一.模式解析 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...
- 设计模式-享元模式(FlyWeight)
一.概念 享元模式是对象的结构模式,它以共享的方式高效的支持大量的细粒度对象,减少对象的数量,并达到节约内存的目的. 享元对象能够做到共享的关键,主要是区分了内部状态和外部状态,内部状态是对象是在建立 ...
随机推荐
- [leetcode 24] Swap Nodes in k-Group
1 题目: 目前被墙,看不了. 2 思路: 比较简单,注意处理边界点就好 3 代码: public ListNode swapPairs(ListNode head) { int temp; if(h ...
- noty – jQuery通知插件
noty是一个jQuery的通知(信息提示)插件,灵活轻便,是一个非常棒的用于替代传统提示对话框的插件. 当前最新版本为2.1.0: 从https://github.com/needim/noty 可 ...
- WebRTC实现网页版多人视频聊天室
因为产品中要加入网页中网络会议的功能,这几天都在倒腾 WebRTC,现在分享下工作成果. 话说 WebRTC Real Time Communication 简称 RTC,是谷歌若干年前收购的一项技术 ...
- .NET Core 1.0-最简单的Hello world控制台程序
使用任意的文本编辑软件,新建两个文件 1.Program.cs using System; using System.Collections.Generic; using System.Linq; u ...
- 团队项目——站立会议 DAY8
第八次站立会议记录: 参会人员:张靖颜,钟灵毓秀,何玥,赵莹,王梓萱 项目进展: 1.张靖颜:在反复修改和审查后,处理功能模块代码出错处,完善并运行. 2.钟灵毓秀:再次检查代码,运行报错处的代码修改 ...
- var与this,{}与function 小记
JavaScript var是用来定义一个变量,this常用来定义或调用一个属性或方法.但是在全局范围内,this和var定义变量是等价的. window console.log('window:', ...
- [.net 面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化
[.net 面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化 本节导读: 在.NET编程中,经常面向对象处理完以后要转换成另一种格式传输或存储,这种将对 ...
- [.net 面向对象编程基础] (15) 抽象类
[.net 面向对象编程基础] (15) 抽象类 前面我们已经使用到了虚方法(使用 Virtual修饰符)和抽象类及抽象方法(使用abstract修饰符)我们在多态一节中说到要实现类成员的重写必须定义 ...
- Programming Erlang 学习笔记(一)
入门 启动Shell 在cmd中输入命令”erl”,百分号(%)表示一个注释的开始,从百分号开始到这行结束的所有文本都被看做是注释. 一个完整的命令需要以一个句点和一个回车结束. 退出erlang的命 ...
- Linux gzip、gunzip
200 ? "200px" : this.width)!important;} --> 介绍 gzip是linux自带的压缩文件命令,它的压缩比大概能达到60%-70%,比z ...