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

个人网站开发软件seo关键词排名优化教程

个人网站开发软件,seo关键词排名优化教程,在线做ppt的网站,有做公司网站享元模式是一种结构型设计模式,主要通过共享技术有效地减少大量细粒度对象的复用,以减少内存占用和提高性能。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式。 Flyweight is a structural pattern, which effecti…

享元模式是一种结构型设计模式,主要通过共享技术有效地减少大量细粒度对象的复用,以减少内存占用和提高性能。由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式。

Flyweight is a structural pattern, which effectively reduces the reuse of a large number of fine-grained objects through sharing technology to reduce memory consumption and improve performance. Since the flyweight pattern requires that objects that can be shared must be fine-grained objects, it is also called lightweight mode.  

结构设计

Flyweight: 抽象享元类,包含原始对象中部分能在多个对象中共享的状态。 同一享元对象可在许多不同情景中使用。 享元中存储的状态被称为 “内在状态”。 传递给享元方法的状态被称为 “外在状态”。
ConcreteFlyweight: 具体享元类,实现享元接口,并为内部状态(如果存在的话)增加存储空间。
UnsharedConcreteFlyweight: 非共享具体享元类,抽象享元类使共享成为可能,但并不强制共享。
FlyweightFactory: 享元工厂类, 享元工厂会对已有享元的缓存池进行管理。 有了工厂后, 客户端就无需直接创建享元, 它们只需调用工厂并向其传递目标享元的一些内在状态即可。 工厂会根据参数在之前已创建的享元中进行查找, 如果找到满足条件的享元就将其返回; 如果没有找到就根据参数新建享元。
享元模式类图表示如下:
请添加图片描述

伪代码实现

接下来将使用代码介绍下享元模式的实现。

// 1、抽象享元类,存储的状态被称为 "内在状态"。 传递给享元方法的状态被称为 "外在状态"
public abstract class Flyweight {private String intrinsic;protected String extrinsic;public Flyweight(String extrinsic) {this.extrinsic = extrinsic;}public abstract void operation(String extrinsic);
}
// 2、具体享元类,实现享元接口
public class ConcreteFlyweight extends Flyweight {public ConcreteFlyweight(String extrinsic) {super(extrinsic);}@Overridepublic void operation(String extrinsic) {System.out.println("do some thing in the concrete flyweight instance");}
}
// 3、非共享具体享元类,抽象享元类使共享成为可能,但并不强制共享  
public class UnsharedConcreteFlyweight extends Flyweight {public UnsharedConcreteFlyweight(String extrinsic) {super(extrinsic);}@Overridepublic void operation(String extrinsic) {System.out.println("do some thing in the unshared concrete flyweight instance");}
}
// 4、享元工厂类, 享元工厂会对已有享元的缓存池进行管理。 有了工厂后, 客户端就无需直接创建享元,
// 它们只需调用工厂并向其传递目标享元的一些状态即可  
public class FlyweightFactory {private static final Map<String, Flyweight> pool = new HashMap<>();public static Flyweight getFlyweight(String extrinsic) {Flyweight flyweight = pool.get(extrinsic);if (flyweight == null) {flyweight = new ConcreteFlyweight(extrinsic);pool.put(extrinsic, flyweight);System.out.println("put a fly weight instance to the pool");}return flyweight;}
}
// 5、客户端调用
public class FlyweightClient {public void test() {// 从享元工厂获取享元类Flyweight flyweight1 = FlyweightFactory.getFlyweight("one");// 执行享元方法flyweight1.operation("one");// 从享元工厂获取重复享元类(直接从缓存池获取)Flyweight flyweight2 = FlyweightFactory.getFlyweight("one");flyweight2.operation("one");// 获取非共享享元子类Flyweight unsharedConcreteFlyweight = new UnsharedConcreteFlyweight("two");unsharedConcreteFlyweight.operation("two");}
}

适用场景

在以下情况下可以考虑使用享元模式:
(1) 一个系统有大量相同或者相似的对象,由于这类对象的大量使用,造成内存的大量耗费。
应用该模式所获的收益大小取决于使用它的方式和情景。它在下列情况中最有效:
程序需要生成数量巨大的相似对象
这将耗尽目标设备的所有内存
对象中包含可抽取且能在多个对象间共享的重复状态
(2) 对象的大部分状态都可以外部化,可以将这些外部状态传入对象中。
使用享元模式需要维护一个存储享元对象的享元池,而这需要耗费资源,因此,应当在多次重复使用享元对象时才值得使用享元模式。

优缺点

享元模式有以下优点:
(1) 节省内存。享元模式的优点在于它可以极大减少内存中对象的数量,使得相同对象或相似对象在内存中只保存一份。如果程序中有很多相似对象,那么可以考虑使用该模式
(2) 享元模式的外部状态相对独立,而且不会影响其内部状态,从而使得享元对象可以在不同的环境中被共享
但是享元模式也存在以下缺点:
(1) 可能需要牺牲执行速度来换取内存,为了使对象可以共享,享元模式需要将享元对象的状态外部化,而读取外部状态使得运行时间变长。
(2) 代码会变得更加复杂。 需要分离出内部状态和外部状态,这使得程序的逻辑复杂化

参考

《设计模式 可复用面向对象软件的基础》 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 著, 李英军, 马晓星等译
https://design-patterns.readthedocs.io/zh_CN/latest/structural_patterns/flyweight.html 享元模式
https://refactoringguru.cn/design-patterns/flyweight 享元模式
https://www.runoob.com/design-pattern/flyweight-pattern.html 享元模式
https://www.cnblogs.com/adamjwh/p/9070107.html 简说设计模式——享元模式
https://blog.csdn.net/ShuSheng0007/article/details/116424138 秒懂设计模式之享元模式

http://www.dinnco.com/news/9610.html

相关文章:

  • 个人网页制作成品免费下载百度seo自动优化
  • 青岛哪家做网站的公司seo社区
  • 利用js做网站阿拉善盟seo
  • 做网站一般像素互联网广告平台代理
  • 网站上社保做增员怎么做重庆seo团队
  • 网站制作一般要几天全网线报 实时更新
  • 有服务器怎么做网站教程公众号排名优化
  • wordpress 积分购物seo自动优化工具
  • php自己做网站访问量计算免费下载app并安装
  • 凡科建站手机网站建设青岛网站制作seo
  • 小卖部做网站一键生成网站
  • 做酒店网站百度推广公司哪家比较靠谱
  • 网站定制设计网页价格多少钱网站优化seo是什么意思
  • wordpress获取子菜单seo排名计费系统
  • 武汉眼前一亮科技有限公司青岛seo整站优化招商电话
  • 张家港做网站费用内容企业推广
  • 深圳网站快速排名优化b站视频推广网站动漫
  • 怎样建设一个公司网站南京市网站
  • wordpress内网使用深圳网络seo推广
  • 不用ftp做网站seo内容优化心得
  • 网站前台界面模板下载网易搜索引擎入口
  • 济南网站建设 泉诺网站推广平台
  • 网站备案需要准备哪些资料主要推广手段免费
  • 做网站一定要有营业执照吗百度搜索排名查询
  • php网站开发教程网seo外链代发
  • 可以做动图的视频网站产品推广介绍怎么写
  • 广告位seo关键词排名优化的方法
  • 建立网站站建设可以吗百度网盘客户端
  • 家用电脑网站建设优搜云seo
  • 怎么自己在微信上做网站上海不限关键词优化