了解下JAVA的Java计划形式研讨之Flyweight形式
专门做了这个例子;而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开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 是一种为 Internet发展的计算机语言 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) Java是一种计算机编程语言,拥有跨平台、面向对java 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 是一种语言,用以产生「小应用程序(Applet(s))
页:
[1]