企业网站接入微信支付千锋教育培训

web/2025/9/28 13:36:04/文章来源:
企业网站接入微信支付,千锋教育培训,沈阳 网站开发制作,网络营销的策略包括码到三十五 #xff1a; 个人主页 目录 一、引言二、享元设计模式的概念1. 对象状态的划分2. 共享机制 三、享元设计模式的组成四、享元设计模式的工作原理五、享元模式的使用六、享元设计模式的优点和适用场景结语 [参见]#xff1a; Java设计模式#xff1a;核心概述 个人主页 目录 一、引言二、享元设计模式的概念1. 对象状态的划分2. 共享机制 三、享元设计模式的组成四、享元设计模式的工作原理五、享元模式的使用六、享元设计模式的优点和适用场景结语 [参见] Java设计模式核心概述一 Java设计模式单例模式之六种实现方式详解二 Java设计模式工厂模式之简单工厂、工厂方法、抽象工厂三 Java设计模式建造者模式之经典与流式的三种实现四 Java设计模式适配器模式的三种形式五 Java设计模式深入装饰器模式的三种写法六 Java设计模式组合模式之透明与安全的两种实现七 Java设计模式代理模式的静态和动态之分八 Java设计模式外观模式之优雅门面九 Java设计模式组合优于继承化身之桥接模式十 一、引言 设计模式是一种用于解决在特定上下文中经常出现的问题的优秀解决方案。它们为开发人员提供了一种通用的设计语言有助于创建灵活且可维护的代码。享元设计模式Flyweight Pattern是结构型模式之一它通过共享对象来减少系统中对象的数量从而降低系统资源消耗提高系统性能。 二、享元设计模式的概念 享元设计模式Flyweight Pattern是众多设计模式中的一种它专注于解决由于创建大量相似对象而导致的系统资源消耗过高的问题。这一模式的核心思想是“共享”即通过共享尽可能多的对象来减少系统中对象的总数进而降低内存占用和提高系统性能。 1. 对象状态的划分 在享元模式中一个关键的概念是将对象的状态划分为两部分内在状态Intrinsic State和外在状态Extrinsic State。 内在状态这是对象内部固有的、不会随环境改变而变化的属性。内在状态通常是可以被共享的因为它不会因外在条件的不同而有所区别。例如在一个字符渲染系统中字符的字体、大小等属性就可以被视为内在状态因为不论在什么上下文中相同字体和大小的字符都可以被复用。 外在状态这是对象在特定上下文中才有的、会随着环境改变而变化的属性。外在状态是不能被共享的因为它依赖于对象所处的具体环境和上下文。继续以字符渲染为例字符的位置、颜色等可能因用户交互或页面布局的不同而变化因此这些属性被视为外在状态。 2. 共享机制 享元模式通过实现一个享元工厂Flyweight Factory来管理对象的创建和共享。享元工厂会维护一个已创建享元对象的缓存通常是一个哈希表或其他快速查找数据结构并根据请求的类型通常由内在状态决定来返回相应的对象实例。如果请求的类型在缓存中已存在则直接返回该实例如果不存在则创建一个新的享元对象将其添加到缓存中并返回给请求者。 提升性能与资源利用率 通过上述共享机制享元模式能够显著减少系统中相似对象的数量从而降低内存占用。同时由于避免了不必要的对象创建和销毁操作系统的整体性能也会得到提升。这在处理大量相似对象时尤为重要如文本编辑器中的字符渲染、图形界面中的图形元素绘制等场景。 综上所述享元设计模式是一种通过共享对象来优化系统资源消耗和提高性能的设计方案。它通过将对象状态划分为内在状态和外在状态并利用享元工厂来管理对象的创建和共享从而实现了对相似对象的高效处理。 三、享元设计模式的组成 Flyweight享元这是享元对象它封装了可以被共享的状态并且可以被高效地复用。 FlyweightFactory享元工厂这个工厂负责创建和管理享元对象。它通常会缓存已创建的享元对象并在请求相同类型的享元时返回已有的实例。 Client客户端客户端代码使用享元工厂来获取享元对象并在需要时将其外在状态传递给享元。 四、享元设计模式的工作原理 享元模式的核心思想是“共享”。当系统中需要创建大量相似对象时享元模式通过以下步骤来优化对象的创建和使用 提取共享状态首先识别出对象中可以共享的状态并将其封装在享元类中。 分离变化状态将不能共享或随上下文变化的状态从享元类中分离出来作为外在状态。 创建享元工厂实现一个享元工厂来管理享元对象的创建和缓存。当客户端请求一个新的享元时工厂首先检查缓存中是否已经存在相同类型的享元。如果存在则返回该实例否则创建一个新的享元实例并添加到缓存中。 客户端使用客户端代码通过享元工厂获取享元对象并根据需要设置其外在状态。享元对象在执行操作时会结合其内在状态和传递进来的外在状态来完成任务。 五、享元模式的使用 享元模式的实现通常涉及到一个享元类表示要共享的对象一个享元工厂类负责创建和管理享元实例以及客户端代码。下面代码展示如何使用享元模式来减少具有相同属性的对象的数量。 首先定义享元类 Circle表示一个圆形对象其内在状态是颜色这里假设所有圆的大小相同因此不需要作为内在状态。 public class Circle {private String color; // 内在状态颜色public Circle(String color) {this.color color;}public String getColor() {return color;}// 假设的绘制方法这里仅打印信息public void draw() {System.out.println(绘制一个颜色为 color 的圆形);} }然后定义享元工厂类 CircleFactory它负责管理并缓存已经创建的 Circle 对象。 import java.util.HashMap; import java.util.Map;public class CircleFactory {private MapString, Circle circleMap new HashMap(); // 用于缓存Circle对象的Map// 根据颜色获取Circle对象如果缓存中没有则创建一个public Circle getCircle(String color) {Circle circle circleMap.get(color);if (circle null) {circle new Circle(color);circleMap.put(color, circle); // 将新创建的Circle对象加入缓存}return circle;} }最后编写客户端代码来使用享元工厂创建和使用享元对象。 public class FlyweightPatternDemo {private static final CircleFactory circleFactory new CircleFactory();public static void main(String[] args) {// 从享元工厂获取圆形对象并绘制它们Circle circle1 circleFactory.getCircle(红色);circle1.draw(); // 输出绘制一个颜色为 红色的圆形Circle circle2 circleFactory.getCircle(蓝色);circle2.draw(); // 输出绘制一个颜色为 蓝色的圆形Circle circle3 circleFactory.getCircle(红色);circle3.draw(); // 输出绘制一个颜色为 红色的圆形注意这里是复用的circle1// 验证circle1和circle3是否是同一个对象System.out.println(circle1 circle3); // 输出true} }Circle 类是享元它的内在状态是颜色。CircleFactory 是一个享元工厂它使用一个 HashMap 来缓存已经创建的 Circle 对象。当客户端请求一个具有特定颜色的圆形时享元工厂首先检查缓存中是否已经有一个具有该颜色的圆形。如果有则返回该对象否则创建一个新的 Circle 对象并将其添加到缓存中。通过这种方式具有相同颜色的圆形对象实例在系统中只会被创建一次从而减少了内存占用。 六、享元设计模式的优点和适用场景 优点 减少内存消耗通过共享对象实例减少了系统中对象的数量从而降低了内存消耗。 提高性能避免了频繁的对象创建和销毁操作提高了系统的运行性能。 简化系统设计享元模式有助于将对象的共享部分和变化部分分离开来使系统设计更加清晰和灵活。 适用场景 当系统中需要处理大量相似对象时如字符串、图形对象等。 当对象的创建成本较高且大量对象之间存在大量重复数据时。 当需要优化系统资源消耗和提高系统性能时。 结语 享元设计模式是一种高效处理大量相似对象的设计方案。它通过共享对象实例来减少资源消耗和提高性能适用于多种场景。在使用享元模式时需要仔细识别对象的共享状态和变化状态并合理设计享元类和享元工厂。通过合理运用享元模式可以构建出更加灵活、高效和可维护的软件系统。 听说...关注下面公众号的人都变牛了纯技术纯干货 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

咸阳做网站托管浏览器网址导航大全

文章目录 持久化配置慢查询命令及安全配置内存配置 持久化配置 慢查询 命令及安全配置 漏洞:Redis未授权访问配合SSH key文件利用分析-腾讯云开发者社区-腾讯云 (tencent.com) 漏洞出现的核心的原因有以下几点 Redis未设置密码利用了Redis的config set命令动态修…

河北建设厅网站登陆怎么找附件有什么做兼职的好的网站吗

PureFlash云原生存储 PureFlash是一个开源存储系统,它能为云计算和传统应用提供块存储服务。PureFlash最显著的优势是其高性能,每节点能提供超过100万IOPS随机写IO。 PureFlash可以以云原生的方式部署,并为云原生应用提供持久存储。 PureFl…

上海市建设质量协会网站怀化市优化办电话

前言 刚开始,以为做性能测试,就是做些脚本、参数化、关联,压起来之后,再扔出一个结果。 但实际上不止这些内容,还要加上性能分析,关注调优之后响应时间有多大的提升,TPS 有多大的提高&#xf…

建卖手机网站大连信息网

netbeans调试使用NetBeans的Java EE开发人员习惯于直接在NetBeans所选择的应用程序服务器中运行和调试其瘦战应用程序。 在开发打包为ber或镂空jars的微服务时,您期望使用相同的轻松方式进行运行和调试。 好消息是您可以。 在本文中,我将逐步介绍如何在N…

凡科可以做淘客网站吗网站关键词词库怎么做

背景 随着智能门禁等物联网产品的普及,越来越多的开发者对音视频互动体验提出了更高的要求。目前市面上大多一对一互动都是基于WebRTC,优点不再赘述,我们这里先说说可能需要面临的问题:WebRTC的服务器部署非常复杂,可…

做网站是什么行业黄页888

本文转载自:http://book.2cto.com/201211/7897.html 市面上的数据库数量成爆炸式增长,要在它们之间进行权衡是很困难的。幸运的是,它们之中的大多数数据库都能归在几个分类里。本节中,我会描述简单及复杂的键值存储、关系型数据库…

文章类网站重庆php网站建设

spring cloud- Gateway实战二:负载均衡 负载均衡简单了解一)、实操案例-自动负载均衡二)、实操案例-手动负载均衡1、手动负载均衡方式一2、手动负载均衡方式二负载均衡 简单了解 我们引入负载均衡,主要是为了 让网络流量能均匀的分发到多个服务器上,以此来提高系统性能、…

阿里云服务器建网站贵州省建设厅网站首页

分布式锁概念 为什么使用分布式锁 假设有这样一个场景,双十一抢iphone15ProMax手机场景,可以抢多台。操作数据库接口如下: void reduceInventory(Long id,int count) {//1.拿到数量信息Product product mapper.selectById(id);//2.修改数量…

yii2框架做的网站有哪些在wordpress中 怎么把主题删掉

Java进阶十—JDBC 一.说明 用Java语言操作Mysql,首先需要学习Mysql MySQL入门教程-CSDN博客 二.JDBC的由来以及定义 JDBC是什么? Java数据库连接(Java Database Connectivity)简称JDBCJDBC是Java操作各数据库的一种规范,是Java语言中用来…

网站制作品牌有哪些汉沽网站建设

求解最大子序列和 tag: 数据结构与算法 最大子序列和问题: 给定序列A1, A2,... AN, 求最大的子序列和。 例如 :   对于序列4, -3, 5, -2, -1, 2, 6, -2, 最大序列和为11(4 -3 5 - 2 - 1 2 …

网站多久备份一次wordpress 小众软件 主题

web速览 1. 前端开发 概述: 前端开发是构建网站用户界面的过程,主要关注网站的视觉效果和用户体验。又称为客户端 技术栈: HTML(超文本标记语言):用于创建网页的结构和内容。CSS(层叠样式表&a…

网站产品原型图给wordpress添加引导页

yolov5 部署到rk3588 教程来自 yolov5训练pt模型并转换为rknn模型,部署在RK3588开发板上——从训练到部署全过程_yolov5 rknn-CSDN博客 1.通过android studio 部署代码在rk3588板子上运行代码 项目来源 rknn-toolkit2/rknpu2/examples/rknn_yolov5_android_apk…

建立网站的技术女生学网站建设好学吗

图表,是指将既得数据用图形的方式表示出来。在前文中我们介绍过如何使用Java程序来为Excel文档创建图表的方法。本文将通过使用Java程序来演示如何创建PowerPoint图表及为图表添加趋势线。趋势线的运用能够显示数据的变化趋势,同时能够帮助预测数据的未来…

做网站怎样建立服务器centos7.2 wordpress

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在 Golang 领域,并发发送 HTTP 请求…

做网站是先做后台还是前端软文写作要求

20. 公交线路上优化路径的查询 问题描写叙述 最短路径问题是图论中的一个经典问题,当中的Dijkstra算法一直被觉得是图论中的好算法,但有的时候须要适当的调整Dijkstra算法才干完毕多种不同的优化路径的查询。 对于某城市的公交线路,乘坐公…

眉县网站建设迪士尼网站是谁做的

背景 业务主要是通过A系统向B系统写入Kafka,然后B系统消费Kafka 将结果写到Kafka中,A进行消费最终结果。 在整个流程中,A写入Kafka会写入一张 record1表记录,然后在A消费最终结果的时候也记录一张record2表。主要改动的话 只是B系…

模板建站平台网站开发与推广计划书

2024年认证杯SPSSPRO杯数学建模 B题 神经外科手术的定位与导航 原题再现: 人的大脑结构非常复杂,内部交织密布着神经和血管,所以在大脑内做手术具有非常高的精细和复杂程度。例如神经外科的肿瘤切除手术或血肿清除手术,通常需要…

网站系统建设的主要意义长沙网站制作公司怎么做

png图片打包plist工具,手把手教你使用pngPackerGUI_V2.0 此软件是在pngpacker_V1.1软件基础之后,开发的界面化操作软件,方便不太懂命令行的小白快捷上手使用。1.下载并解压缩软件,得到如下目录,双击打开 pngPackerGUI.…

个人网站免费建设开发一个网站成本

单调栈分为单调递增栈和单调递减栈,通过使用单调栈我们可以访问到最近一个比它大(小)的元素。 🍊 单调递增栈:单调递增栈就是从栈底到栈顶数据是依次递增,通常是寻找某方向第一个比它小的元素。 &#x1f…

在线听音乐网站建设做好网站如何发布

在日常开发过程中,可能会出现一些 bug,导致 Mysql 数据库数据重复,需要删除重复数据,这里记录下删除重复数据的通用 SQL ,方便以后需要时查阅 1、写法一 DELETE t1 FROMtbl_name t1 INNER JOIN tbl_name t2 WHEREt1.…