当前位置: 首页 > wzjs >正文

公司网站被百度收录深圳企业网站制作报价

公司网站被百度收录,深圳企业网站制作报价,深圳市住建局诚信登记平台,建设哪里有前言 享元模式的核心是共享细粒度对象,以减少内存使用和对象创建的开销。这和对象池有相似之处,但享元更侧重于共享内在状态,而将可变部分作为外部状态传递。 关键点包括内在状态和外在状态的区分,工厂类管理共享对象&#xff0…

前言

享元模式的核心是共享细粒度对象,以减少内存使用和对象创建的开销。这和对象池有相似之处,但享元更侧重于共享内在状态,而将可变部分作为外部状态传递。

关键点包括内在状态和外在状态的区分,工厂类管理共享对象,以及如何实现对象的复用。

享元模式可以作为另一种工具,特别是在处理大量相似对象时。比如,游戏中大量重复的棋子类型,或者文档中的字符对象,这些场景下享元模式非常适用。

需要注意的是,享元模式适用于对象的大部分状态可以外部化的情况。如果对象的状态经常变化,可能不适合使用享元。此外,线程安全也是一个考虑点,因为共享对象可能被多个线程访问。

最后,总结适用场景和优缺点,帮助用户判断何时使用享元模式。例如,在需要处理大量相似对象且内存占用高时,享元模式能显著优化性能。但如果对象状态变化频繁或难以区分内外状态,可能不适用。


享元模式(Flyweight Pattern)原理详解

核心思想:通过共享技术减少大量细粒度对象的创建开销,将对象的**内在状态(不变部分)外在状态(可变部分)**分离,仅存储一份内在状态,外在状态由客户端传递。

关键概念
  1. 内在状态(Intrinsic State)

    • 对象中不变的部分,可以被多个对象共享(如字体、颜色配置)。
    • 存储于享元对象内部。
  2. 外在状态(Extrinsic State)

    • 对象中随上下文变化的部分(如位置、尺寸)。
    • 由客户端在调用时传入,不存储在享元对象中。
  3. 享元工厂(Flyweight Factory)

    • 管理共享的享元对象池,确保相同内在状态的对象只创建一次。

享元模式结构

+-------------------+         +---------------------+
|   Flyweight       |         | FlyweightFactory    |
+-------------------+         +---------------------+
| +operation(extr)  |<------->| -pool: Map<String,Flyweight> |
+-------------------+         | +getFlyweight(key)  |^                  +---------------------+|                              
+-------------------+
| ConcreteFlyweight |
+-------------------+
| -intrinsicState   |
+-------------------+
| +operation(extr)  |
+-------------------+

代码示例:文本编辑器中的字符对象

假设需要渲染大量文本字符,每个字符的字体、颜色等属性固定(内在状态),但位置、大小可变(外在状态)。

1. 定义享元接口
public interface CharacterFlyweight {void render(int x, int y); // 外在状态由参数传递
}
2. 实现具体享元类
public class ConcreteCharacter implements CharacterFlyweight {// 内在状态(不变)private final char character;private final String font;private final String color;public ConcreteCharacter(char character, String font, String color) {this.character = character;this.font = font;this.color = color;}@Overridepublic void render(int x, int y) {System.out.printf("Render '%s' at (%d,%d) with font=%s, color=%s\n",character, x, y, font, color);}
}
3. 实现享元工厂
import java.util.HashMap;
import java.util.Map;public class CharacterFactory {private static final Map<String, CharacterFlyweight> pool = new HashMap<>();public static CharacterFlyweight getCharacter(char c, String font, String color) {// 生成唯一键:组合内在状态String key = c + "-" + font + "-" + color;if (!pool.containsKey(key)) {pool.put(key, new ConcreteCharacter(c, font, color));}return pool.get(key);}
}
4. 客户端使用
public class Client {public static void main(String[] args) {// 获取共享的享元对象CharacterFlyweight charA = CharacterFactory.getCharacter('A', "Arial", "Red");CharacterFlyweight charB = CharacterFactory.getCharacter('B', "Times New Roman", "Blue");CharacterFlyweight charA2 = CharacterFactory.getCharacter('A', "Arial", "Red"); // 复用 charA// 渲染字符,传递外在状态(位置)charA.render(10, 20);charB.render(30, 40);charA2.render(50, 60); // 复用 charA 的内在状态}
}
输出结果
Render 'A' at (10,20) with font=Arial, color=Red
Render 'B' at (30,40) with font=Times New Roman, color=Blue
Render 'A' at (50,60) with font=Arial, color=Red

享元模式 vs. 对象池

特性享元模式对象池
目标减少内存占用,共享不变状态复用可变对象,减少创建开销
状态管理内在状态共享,外在状态由客户端传递对象状态可能被重置或复用
适用场景大量相似对象,内在状态可分离(如字符、UI控件)对象创建成本高(如数据库连接、线程)

适用场景

  1. 大量重复对象:如游戏中的粒子系统、文本编辑器中的字符。
  2. 内存敏感型应用:移动端或嵌入式系统。
  3. 不可变对象:如

文章转载自:

http://AOc7WBRW.cwskn.cn
http://QrRkrU7W.cwskn.cn
http://sSBU9jPh.cwskn.cn
http://pnXgwX0q.cwskn.cn
http://4mmiWu1q.cwskn.cn
http://cbDWyczU.cwskn.cn
http://Y5IoPQl4.cwskn.cn
http://BHmKe9Gc.cwskn.cn
http://yZjkwaNL.cwskn.cn
http://Kr01jvzY.cwskn.cn
http://8yNPTkjk.cwskn.cn
http://li0AI1qD.cwskn.cn
http://5yIijaPk.cwskn.cn
http://jzWluNoH.cwskn.cn
http://ZHZkzhbL.cwskn.cn
http://K5hu3Zds.cwskn.cn
http://PUsSEZAC.cwskn.cn
http://gj935PtA.cwskn.cn
http://dOmiyUBu.cwskn.cn
http://xz2MG2t9.cwskn.cn
http://vFBFJpwM.cwskn.cn
http://SDARKNGl.cwskn.cn
http://i97B7TNH.cwskn.cn
http://zAF5LoMi.cwskn.cn
http://dR14C1r8.cwskn.cn
http://hVQpizg4.cwskn.cn
http://IvYlbKi7.cwskn.cn
http://qZ9XZ2Uo.cwskn.cn
http://f0Vw0HtX.cwskn.cn
http://ZS1RsB7Q.cwskn.cn
http://www.dtcms.com/wzjs/720915.html

相关文章:

  • 网站建设人员工资中国黄金建设网站
  • 建设网站的政策风险分析常见的网络营销有哪些
  • 天津开发区建网站公司国外画册设计欣赏网站
  • wordpress+手机站目录公众号登陆
  • 安徽大学电子信息工程学院官方网江苏纯手工seo
  • 怎么挑选网站建设公司微网站开发微网站建设
  • 织梦教育培训网站源码黄骅贴吧在线
  • 西电信息化建设处网站一键优化助手
  • 杭州网站推广方案平台企业自建网站平台有哪些
  • 如何制作电脑公司网站asp做网站好不好
  • 请别人做网站需要注意什么中职专业设计网站
  • 四会建设局网站网站上传文件夹权限
  • 做网站有谁做wordpress社区模板
  • wordpress 全站加密有关优化网站建设的书籍
  • 珠海网站设计专业开发app公司
  • 门户网站建设方案文档太原代理记账公司
  • 电子商务网站建设与维护中职教材做图像网站
  • 三网合一网站建设计划自助wap建站
  • 网站建设从建立服务器开始wordpress整站搬迁
  • 长沙学校网站建设wordpress 去掉顶部
  • 培训机构网站设计好吗腾达建设网站
  • 整套网站建设环影视界免费版wordpress主题
  • 用php做的网站前后台模板做食品的网站设计要注意
  • 荧光字体制作网站百度网页版在线使用
  • 用php做购物网站wordpress 时间选择器
  • 江苏和城乡建设部网站首页已有域名 搭建网站
  • 免费模板简历网站深圳网站优化提供商
  • 网站设计建设流程图注册网站流程
  • 重庆做网站开发的公司做自己的网站给人的启发
  • 网站建设书wordpress插件tag