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

wordpress 收款插件seo是付费还是免费推广

wordpress 收款插件,seo是付费还是免费推广,域名 利用域名做网站 邮箱,做网站为什么要去工厂结构性设计模式之Flyweight(享元) 前言: 用自己话理解,避免对象重复创建,对象的属性信息可以重复,细度地方进行区分,比如案例用画圆的代码讲解享元设计模式。经典场景比如游戏:五子…

结构性设计模式之Flyweight(享元)

前言:
用自己话理解,避免对象重复创建,对象的属性信息可以重复,细度地方进行区分,比如案例用画圆的代码讲解享元设计模式。经典场景比如游戏:五子棋、象棋、字体、炸弹、子弹、赛车… 只是细粒度不同。

摘要:

享元模式是一种结构性设计模式,通过共享对象来减少内存使用和对象创建开销。该模式将对象属性分为内部状态(可共享)和外部状态(不可共享),适用于大量相似对象场景。典型案例包括图形游戏(粒子效果、地图瓦片)、文本处理(字符样式)和UI控件。模式结构包含享元接口、具体享元类、享元工厂和客户端。文中以Java代码示例展示了如何实现共享圆形对象的颜色属性,而坐标作为外部状态单独处理,有效减少了对象创建数量。

1)意图

运用共享技术有效地支持大量粒度的对象。

2)结构

在这里插入图片描述
其中:

  • Flyweight 描述一个接口,通过这个接口 Flyweight 可以接受并作用于外部状态。
  • ConcreteFlyweight 实现Flyweight接口,并为内部状态(如果有)增加存储空间。
  • ConcreteFlyweight 对象必须是可共享的。它所存储的状态必须是内部的,即它必须独
    立于 ConcreteFlyweight 对象的场景。
  • 并非所有的 Flyweight 子类都需要被共享。Flyweight 接口使共享成为可能,但它并不
    强制共享。在 Flyweight 对象结构的某些层次,UnsharedConcreteFlyweight 对象通常将
    ConcreteFlyweight 对象作为子结点。
  • FlyweightFactory 创建并管理Flyweight对象;确保合理地共享Flyweight,当用户请求
    一个Flyweight时,FlyweightFactory 对象提供一个已创建的实例或者在不存在时创建
    个实例。
  • Client 维持一个对 Flyweight 的引用;计算或存储一个或多个 Flyweight 的外部状态。

3)适用性

Flyweight模式适用于:

  • 一个应用程序使用了大量的对象。
  • 完全由于使用大量的对象,造成很大的存储开销。
  • 对象的大多数状态都可变为外部状态。
  • 如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。
  • 应用程序不依赖于对象标识。由于Flyweight对象可以被共享,所以对于概念上明显
    有别的对象,标识测试将返回真值。

4)应用场景

  1. 图形与游戏开发
    场景:游戏中的大量粒子(火焰、烟雾)或地图瓦片(Tiles)。

实现:

内部状态:粒子的纹理、颜色;瓦片的图片。

外部状态:粒子的坐标、速度;瓦片的位置。

效果:10,000 个相同纹理的粒子 → 共享一个享元对象。

  1. 文本处理
    场景:文档编辑器渲染字符。

实现:

内部状态:字符的字体、字号、颜色(可共享)。

外部状态:字符在文档中的行列位置(每次渲染传入)。

效果:避免为每个相同字符重复存储样式信息。

  1. 用户界面(UI)控件
    场景:表格或列表中重复的单元格控件。

实现:共享单元格的样式(背景色、边框),仅存储内容差异。

  1. 网络设备模拟
    场景:模拟网络中的路由器(相同型号)。

实现:共享路由器的配置模板,独立存储各路由器的IP地址。

import java.util.HashMap;
import java.util.Map;
import java.util.Random;/*** @author psd 结构性设计模式之享元设计模式*/
public class FlyweightPattern1 {public static void main(String[] args) {ShapeFactory shapeFactory = new ShapeFactory();Random random = new Random();String colors[] = { "red", "blue", "green", "white", "black" };for (int i = 1; i < 21; i++) {int x = random.nextInt(colors.length);Shape shape = shapeFactory.getShape(colors[x]);System.out.print("第" + i + "个圆");shape.draw(random.nextInt(200), random.nextInt(604));}}
}class ShapeFactory {private Map<String, Shape> shapeMap = new HashMap<>();public Shape getShape(String color) {if (!shapeMap.containsKey(color)) {shapeMap.put(color, new Circle(color));System.out.println("create shape color :" + color + "cicle");}return shapeMap.get(color);}
}abstract class Shape {protected String color;/*** 画圆 坐标的位置* * @param x*            x坐标* @param y*            y坐标*/public abstract void draw(int x, int y);
}class Circle extends Shape {public Circle(String color) {this.color = color;}@Overridepublic void draw(int x, int y) {System.out.println("draw a color: " + color + " circle at " + x + ":" + y);}
}

喜欢我的文章记得点个在看,或者点赞,持续更新中ing…

http://www.dtcms.com/wzjs/159592.html

相关文章:

  • 网站建设推广最佳bt磁力猫
  • 移动的网络网站建设百度seo和sem的区别
  • 花网站开发背景semiconductor
  • 昆明做网站的公司哪家好官网seo怎么做
  • 个人网站做经营性运营培训班学费大概多少
  • 爱站工具包的模块有哪些网站设计专业的公司
  • 安徽建网站公司长沙百度快照优化排名
  • 免费建立网站揭阳百度seo公司
  • 商业网站建设教程超级外链发布工具
  • 做58网站空调维修接单怎么样在线搭建网站
  • app是网站吗二次感染即将大爆发
  • 美食网站建设策划书范文百度竞价网站
  • 我的网站360搜索被做跳转360推广登录入口官网
  • 有路由器做网站网站排名优化首页
  • 模板网站zencart微信朋友圈广告30元 1000次
  • mac 做网站百度搜索app下载
  • 湖州房产网站建设百度网站排名查询工具
  • 代运营怎么判定诈骗长沙seo优化推广
  • 中山公司网站建设怎么免费制作网站
  • 广西桂林网站建设公司夸克搜索入口
  • 中国电子系统建设三公司网站开发一个app平台大概需要多少钱?
  • 珠海网站制作平台百度金融
  • 去香洲会变黄码吗外贸建站优化
  • 最经济 网站建设成都网站优化平台
  • 公司主页和公司网站持续优化疫情防控举措
  • 站群系统开发营销推广网站推广方案
  • windows2008做网站最新新闻实时新闻
  • 网站定制开发微信运营今日十大新闻
  • 兰州移动端网站建设百度应用app下载
  • 网站的用户注册怎么做怎样建立网站平台