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

it之家网站源码wordpress门户主体

it之家网站源码,wordpress门户主体,在网站建设工作会议上讲话,网站建设微信文章Java 享元模式(Flyweight Pattern)详解 🦋 什么是享元模式? 享元模式是一种结构型模式,它通过共享相同的对象来减少内存消耗,适用于大量细粒度对象的场景。关键思想是缓存重复出现的对象,避免…

Java 享元模式(Flyweight Pattern)详解

🦋 什么是享元模式?

享元模式是一种结构型模式,它通过共享相同的对象来减少内存消耗,适用于大量细粒度对象的场景。关键思想是缓存重复出现的对象,避免重复创建。


🧠 使用场景

  • 系统中存在大量相似对象
  • 对象的状态可分为内部状态(可共享)外部状态(不可共享)
  • 对象创建代价高,影响性能

🏗️ 模式结构

  • Flyweight(享元抽象类):定义共享接口
  • ConcreteFlyweight(具体享元类):实现共享逻辑,存储内部状态
  • FlyweightFactory(享元工厂):管理享元对象池,复用已有对象

✅ 示例:围棋棋子池

享元接口(Flyweight)

public interface ChessPiece {void display(String position);
}

具体享元(ConcreteFlyweight)

public class BlackChess implements ChessPiece {@Overridepublic void display(String position) {System.out.println("⚫ 黑棋,位置:" + position);}
}public class WhiteChess implements ChessPiece {@Overridepublic void display(String position) {System.out.println("⚪ 白棋,位置:" + position);}
}

享元工厂(FlyweightFactory)

import java.util.HashMap;
import java.util.Map;public class ChessFactory {private static final Map<String, ChessPiece> cache = new HashMap<>();public static ChessPiece getChess(String color) {ChessPiece piece = cache.get(color);if (piece == null) {if (color.equalsIgnoreCase("black")) {piece = new BlackChess();} else if (color.equalsIgnoreCase("white")) {piece = new WhiteChess();}cache.put(color, piece);}return piece;}
}

客户端调用

public class Client {public static void main(String[] args) {ChessPiece black1 = ChessFactory.getChess("black");ChessPiece black2 = ChessFactory.getChess("black");ChessPiece white1 = ChessFactory.getChess("white");black1.display("A1");black2.display("B2");white1.display("C3");System.out.println("black1 与 black2 是否为同一对象?" + (black1 == black2)); // true}
}

🧩 优点

  • 大量相似对象可以复用,节省内存,提升性能

  • 将共享与非共享状态区分清晰,结构更清晰

⚠️ 缺点

  • 系统逻辑变复杂,需要区分内部与外部状态

  • 不适合对象差异性大的情况

✅ 使用建议

  • 适用于如下情况:

  • 游戏对象池(如子弹、精灵)

  • 数据库连接池、线程池

  • 文本编辑器中的字体对象共享

http://www.dtcms.com/a/592479.html

相关文章:

  • 浏览器访问web服务器经过了哪些过程
  • 时序数据库系列(七):性能监控实战指标收集
  • 【数据库】分布式事务篇
  • 《Windows 11 + Docker:极简DVWA靶场搭建全记录》—— 附详细排错指南与最终解决方案
  • 时序数据库系列(八):InfluxDB配合Grafana可视化
  • M3部署vllm
  • 仿新浪全站网站源码公司简介电子版宣传册模板
  • 在 Lit 应用中实现响应式布局
  • 零基础学AI大模型之向量数据库介绍与技术选型思考
  • 三次更名的背后:百度AI的定位困惑
  • StreamingT2V:从文本生成一致、动态和可扩展的长视频
  • 网站入口百度免费空间最大的网盘
  • 基于YOLO11深度学习的电梯内车辆识别系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
  • vscode配置Claude Code(使用智谱API)
  • 基于VMware与CentOS 7的Hadoop集群部署全景指南
  • 【系统分析师】考后总结
  • Java 枚举类(Enum)技术文档
  • Qt 里写 QUdpSocket 发一串数据为例,用 4 层模型顺一遍流程
  • 太阳光模拟器:在电动天窗直射工况下HUD测试中的应用
  • 网站seo分析学做网站多少钱
  • JMeter与Postman的区别
  • (对标 Spring AI 和 LangChain4j)Solon AI MCP v3.7.0, v3.6.4, v3.5.8 发布(支持 LTS)
  • 玩转二叉树:数据结构中的经典之作
  • ASP.NET网站开发之“跨域”
  • 服饰品牌网站建设千川推广官网
  • Vue2/3面试题
  • C++ ODB ORM 完全指南:从入门到实战应用
  • Java-----集合
  • 金昌市网站建设vfp wordpress
  • 网站建设,从用户角度开始私人做网站