仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 658|回复: 13
打印 上一主题 下一主题

[学习教程] 来看计划形式之Flyweight

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:29:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。
Flyweight界说:
制止大批具有不异内容的小类的开支(如泯灭内存),使人人共享一个类(元类).
为何利用?
面向对象言语的准绳就是统统都是对象,可是假如真正利用起来,偶然对象数大概显得很复杂,好比,字处置软件,假如以每一个笔墨都作为一个对象,几千个字,对象数就是几千,无疑泯灭内存,那末我们仍是要"求同存异",找出这些对象群的配合点,计划一个元类,封装能够被共享的类,别的,另有一些特征是取决于使用(context),是不成共享的,这也Flyweight中两个主要观点外部形态intrinsic和内部形态extrinsic之分.
说白点,就是先捏一个的原始模子,然后跟着分歧场所和情况,再发生各具特性的详细模子,很明显,在这里必要发生分歧的新对象,以是Flyweight形式中常呈现Factory形式.Flyweight的外部形态是用来共享的,Flyweightfactory卖力保护一个Flyweightpool(形式池)来寄存外部形态的对象.
Flyweight形式是一个进步程序效力和功能的形式,会年夜年夜加速程序的运转速率.使用场所良多:好比你要从一个数据库中读取一系列字符串,这些字符串中有很多是反复的,那末我们能够将这些字符串贮存在Flyweight池(pool)中.
怎样利用?
我们先从Flyweight笼统接口入手下手:
publicinterfaceFlyweight
{
  publicvoidoperation(ExtrinsicStatestate);
}
//用于本形式的笼统数据范例(自行计划)
publicinterfaceExtrinsicState{}
上面是接口的详细完成(ConcreteFlyweight),并为外部形态增添内存空间,ConcreteFlyweight必需是可共享的,它保留的任何形态都必需是外部(intrinsic),也就是说,ConcreteFlyweight必需和它的使用情况场所有关.
publicclassConcreteFlyweightimplementsFlyweight{
  privateIntrinsicStatestate;
  publicvoidoperation(ExtrinsicStatestate)
  {
      //详细操纵
  }
}
固然,并非一切的Flyweight详细完成子类都必要被共享的,以是另有别的一种不共享的ConcreteFlyweight:
publicclassUnsharedConcreteFlyweightimplementsFlyweight{
  publicvoidoperation(ExtrinsicStatestate){}
}
Flyweightfactory卖力保护一个Flyweight池(寄存外部形态),当客户端哀求一个共享Flyweight时,这个factory起首搜刮池中是不是已有可合用的,假如有,factory只是复杂前往送出这个对象,不然,创立一个新的对象,到场到池中,再前往送出这个对象。
publicclassFlyweightFactory{
  //Flyweightpool
  privateHashtableflyweights=newHashtable();
  publicFlyweightgetFlyweight(Objectkey){
    Flyweightflyweight=(Flyweight)flyweights.get(key);
    if(flyweight==null){
      //发生新的ConcreteFlyweight
      flyweight=newConcreteFlyweight();
      flyweights.put(key,flyweight);
    }
    returnflyweight;
  }
}
<p>
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-21 08:25:19 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
海妖 该用户已被删除
板凳
发表于 2015-1-25 14:18:49 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
变相怪杰 该用户已被删除
地板
发表于 2015-1-25 19:41:29 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
小妖女 该用户已被删除
5#
发表于 2015-2-1 16:30:34 | 只看该作者
是一种为 Internet发展的计算机语言
活着的死人 该用户已被删除
6#
发表于 2015-2-4 09:49:17 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
金色的骷髅 该用户已被删除
7#
发表于 2015-2-5 22:12:57 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
小魔女 该用户已被删除
8#
发表于 2015-3-3 23:01:18 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
小女巫 该用户已被删除
9#
发表于 2015-3-4 05:02:24 | 只看该作者
是一种为 Internet发展的计算机语言
第二个灵魂 该用户已被删除
10#
发表于 2015-3-7 10:30:51 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
飘灵儿 该用户已被删除
11#
发表于 2015-3-7 15:45:08 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
灵魂腐蚀 该用户已被删除
12#
发表于 2015-3-12 15:44:48 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
谁可相欹 该用户已被删除
13#
发表于 2015-3-19 23:28:02 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
透明 该用户已被删除
14#
发表于 2015-4-3 04:58:29 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 16:48

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表