仓酷云

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

[学习教程] 了解下JAVA的Java计划形式研讨之Flyweight形式

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:23:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。
GOF:使用共享手艺无效地撑持大批细粒度的对象。
注释一下观点:也就是说在一个体系中假如有多个不异的对象,那末只共享一份就能够了,不用每一个都往实例化一个对象。好比说(这里援用GOF书中的例子)一个文本体系,每一个字母定一个对象,那末巨细写字母一共就是52个,那末就要界说52个对象。假如有一个1M的文本,那末字母是何其的多,假如每一个字母都界说一个对象那末内存早就爆了。那末假如如果每一个字母都共享一个对象,那末就年夜小节约了资本。
在Flyweight形式中,因为要发生林林总总的对象,以是在Flyweight(享元)形式中常呈现Factory形式。Flyweight的外部形态是用来共享的,Flyweightfactory卖力保护一个对象存储池(FlyweightPool)来寄存外部形态的对象。Flyweight形式是一个进步程序效力和功能的形式,会年夜年夜加速程序的运转速率.使用场所良多,上面举个例子:
先界说一个笼统的Flyweight类:
packageFlyweight;
publicabstractclassFlyweight
...
{
 publicabstractvoidoperation();
}//endabstractclassFlyweight
在完成一个详细类:
packageFlyweight;
publicclassConcreteFlyweightextendsFlyweight
...
{
 privateStringstring;
 publicConcreteFlyweight(Stringstr)
 ...
 {
  string=str;
 }//endConcreteFlyweight(...)
 publicvoidoperation()
 ...
 {
  System.out.println("Concrete---Flyweight:"+string);
 }//endoperation()
}//endclassConcreteFlyweight
完成一个工场办法类:
packageFlyweight;
importjava.util.Hashtable;
publicclassFlyweightFactory
...
{
 privateHashtableflyweights=newHashtable();//----------------------------1
 publicFlyweightFactory()...{}
 publicFlyweightgetFlyWeight(Objectobj)
 ...
 {
  Flyweightflyweight=(Flyweight)flyweights.get(obj);//----------------2
  if(flyweight==null)...{//---------------------------------------------------3
   //发生新的ConcreteFlyweight
   flyweight=newConcreteFlyweight((String)obj);
   flyweights.put(obj,flyweight);//--------------------------------------5
  }
  returnflyweight;//---------------------------------------------------------6
 }//endGetFlyWeight(...)
 publicintgetFlyweightSize()
 ...
 {
  returnflyweights.size();
 }
}//endclassFlyweightFactory
<p>
windows系统样,他们做了什么事或者留了一些后门程序,谁都不知道,二,java开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的
飘灵儿 该用户已被删除
沙发
发表于 2015-1-20 23:45:05 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
admin 该用户已被删除
板凳
发表于 2015-1-25 22:05:18 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
老尸 该用户已被删除
地板
发表于 2015-1-28 11:56:02 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
不帅 该用户已被删除
5#
发表于 2015-2-5 14:37:39 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
山那边是海 该用户已被删除
6#
发表于 2015-2-5 15:37:59 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
再见西城 该用户已被删除
7#
发表于 2015-2-8 13:56:46 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
8#
 楼主| 发表于 2015-2-11 21:40:34 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
小妖女 该用户已被删除
9#
发表于 2015-2-16 09:04:11 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
兰色精灵 该用户已被删除
10#
发表于 2015-2-24 23:32:36 | 只看该作者
是一种为 Internet发展的计算机语言
精灵巫婆 该用户已被删除
11#
发表于 2015-2-27 02:35:08 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
小女巫 该用户已被删除
12#
发表于 2015-2-28 22:39:57 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
金色的骷髅 该用户已被删除
13#
发表于 2015-3-1 23:04:59 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
深爱那片海 该用户已被删除
14#
发表于 2015-3-11 00:14:15 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
谁可相欹 该用户已被删除
15#
发表于 2015-3-17 16:42:42 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
灵魂腐蚀 该用户已被删除
16#
发表于 2015-3-24 12:07:31 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-15 08:58

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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