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

重庆城市管理学院网站手机网站建设设计

重庆城市管理学院网站,手机网站建设设计,友链,万户网络公司怎么样Go和Java实现享元模式 下面通过一个实例来说明享元模式的使用。 1、享元模式 享元模式主要用于减少创建对象的数量#xff0c;以减少内存占用和提高性能。这种类型的设计模式属于结构型模式#xff0c;它提 供了减少对象数量从而改善应用所需的对象结构的方式。 享元模式…Go和Java实现享元模式 下面通过一个实例来说明享元模式的使用。 1、享元模式 享元模式主要用于减少创建对象的数量以减少内存占用和提高性能。这种类型的设计模式属于结构型模式它提 供了减少对象数量从而改善应用所需的对象结构的方式。 享元模式尝试重用现有的同类对象如果未找到匹配的对象则创建新对象。 意图运用共享技术有效地支持大量细粒度的对象。 主要解决在有大量对象时有可能会造成内存溢出我们把其中共同的部分抽象出来如果有相同的业务请 求直接返回在内存中已有的对象避免重新创建。 何时使用1、系统中有大量对象。 2、这些对象消耗大量内存。 3、这些对象的状态大部分可以外部化。 4、 这些对象可以按照内蕴状态分为很多组当把外蕴对象从对象中剔除出来时每一组对象都可以用一个对象来 代替。 5、系统不依赖于这些对象身份这些对象是不可分辨的。 如何解决用唯一标识码判断如果在内存中有则返回这个唯一标识码所标识的对象。 关键代码用 HashMap 存储这些对象。 应用实例1、JAVA 中的 String如果有则返回如果没有则创建一个字符串保存在字符串缓存池里面。 2、 数据库的连接池。 优点大大减少对象的创建降低系统的内存使效率提高。 缺点提高了系统的复杂度需要分离出外部状态和内部状态而且外部状态具有固有化的性质不应该随着 内部状态的变化而变化否则会造成系统的混乱。 使用场景1、系统有大量相似对象。 2、需要缓冲池的场景。 注意事项1、注意划分外部状态和内部状态否则可能会引起线程安全问题。 2、这些类必须有一个工厂对 象加以控制。 适用性 一个应用程序使用了大量的对象。 完全由于使用大量的对象造成很大的存储开销。 对象使大多数状态都可变为外部状态。 如果删除对象的外部状态那么可以使相对较少的共享对象取代很多组对象。 应用程序不依赖于对象标识由于 Flyweight 对象可以被共享对于概念上明显有别的对象标识测试将返回 真值。 2、Go实现享元模式 package flyweight// Flyweight type Flyweight interface {Action(arg int) }package flyweightimport fmt// FlyweightImpl type FlyweightImpl struct { }func (flyweightImpl *FlyweightImpl) Action(arg int) {fmt.Println(参数值: , arg) }package flyweight// FlyweightFactory type FlyweightFactory struct {flyweights map[string]Flyweight }func NewFlyweightFactory() FlyweightFactory {return FlyweightFactory{flyweights: map[string]Flyweight{},} }func (flyweightFactory *FlyweightFactory) GetFlyweight(key string) Flyweight {if flyweightFactory.flyweights[key] nil {flyweightFactory.flyweights[key] new(FlyweightImpl)}return flyweightFactory.flyweights[key] }func (flyweightFactory *FlyweightFactory) GetSize() int {return len(flyweightFactory.flyweights) }package mainimport (fmt. proj/flyweight )func main() {flyWeight : NewFlyweightFactory()fly1 : flyWeight.GetFlyweight(a)fly1.Action(1)fly2 : flyWeight.GetFlyweight(a)fmt.Println(fly1 fly2)fly3 : flyWeight.GetFlyweight(b)fly3.Action(2)fly4 : flyWeight.GetFlyweight(c)fly4.Action(3)fly5 : flyWeight.GetFlyweight(d)fly5.Action(4)fmt.Println(flyWeight.GetSize()) }# 输出 参数值: 1 true 参数值: 2 参数值: 3 参数值: 4 43、Java实现享元模式 package flyweight;// Flyweight public interface Flyweight {void action(int arg); }package flyweight;// FlyweightImpl public class FlyweightImpl implements Flyweight {Overridepublic void action(int arg) {System.out.println(参数值: arg);} }package flyweight;import java.util.HashMap; import java.util.Map;// FlyweightFactory public class FlyweightFactory {private final static MapString,Flyweight FLY_WEIGHTS new HashMap();public FlyweightFactory(String arg) {FLY_WEIGHTS.put(arg, new FlyweightImpl());}public static Flyweight getFlyweight(String key) {if (FLY_WEIGHTS.get(key) null) {FLY_WEIGHTS.put(key,new FlyweightImpl());}return FLY_WEIGHTS.get(key);}public static int getSize() {return FLY_WEIGHTS.size();} }package flyweight;public class Test {public static void main(String[] args) {Flyweight fly1 FlyweightFactory.getFlyweight(a);fly1.action(1);Flyweight fly2 FlyweightFactory.getFlyweight(a);System.out.println(fly1 fly2);fly2.action(2);Flyweight fly3 FlyweightFactory.getFlyweight(b);fly3.action(3);Flyweight fly4 FlyweightFactory.getFlyweight(c);fly4.action(4);Flyweight fly5 FlyweightFactory.getFlyweight(d);fly5.action(5);System.out.println(FlyweightFactory.getSize());} }# 输出 参数值: 1 true 参数值: 2 参数值: 3 参数值: 4 参数值: 5 4
http://www.dnsts.com.cn/news/42935.html

相关文章:

  • 保定市建设局安监网站凯里信息网
  • 企业为什么要做建站wordpress 自定义 空白
  • 临安市建设局网站设计类专业学校有哪些
  • 小学网站模板源码网页如何设计跑马灯效果
  • 企业标准型手机网站不适合做室内设计的人
  • 烟台市龙口建设局网站网站开发的三个流程
  • 招远做网站公司dw网页制作教程装修手册
  • 网站开发学生职业规划给个网址2022年能用的
  • 财政网站平台建设不足seo需要付费吗
  • 网站建设与维护教学视频教程北京网站建设公司黄页
  • 李青青做网站 公司主要做应用领域衡水网站建设怎么做
  • 怎么做商业网站模板罗湖网站建设设计
  • 城乡和住房建设厅网站网站产品图怎么做
  • 网站后台如何开发阿里云这么建设网站
  • 我想做卖鱼苗网站怎样做公司网页怎么设计
  • 未来做那些网站能致富如何做视频网站流程图
  • 企业官方网站如何做蓝v认证网站建设佰首选金手指十八
  • 电商网站 服务器微信做网站的弊端
  • 网站做的像会侵权吗wordpress ajax 注册
  • 公司付的网站费怎么做分录wordpress get author link
  • 企业网站建设三网合一怎样做自己的微商网站6
  • 咸阳市建设局网站长春网站建设与健
  • 建立问答类的网站网站做担保交易平台
  • 江西省网站建设先进表彰排名优化软件点击
  • 网站建设费财务列账更改wordpress密码
  • 北京的网站建设收费标准找潍坊做网站的
  • 哈尔滨网站建设技术托管青岛在线建站排名公司
  • 本溪建设网站微信代码生成器
  • 域名做违法网站长春网站建设推荐网诚传媒
  • 肉部网站建设包括哪些建设网站应该注意的地方