对比两个设计模式,不要仅限于代码层的比较,有的时候两个模式的代码看着差不多,但是他们所面向的问题与思想不同。首先,享元模式解决的是减少大量小对象的内存开销,单例模式解决的是某个类的实例在程序中只需要一个。其次,享元模式和单例模式,虽然都是通过共享对象来解决,但是享元模式中的对象是有外部状态的,比如,在文本编辑软件中,对字符的处理,在文件中会出现大量相同的字母,相同这是对象的内部状态,而相同的字母在不同位置有时他的颜色、背景色等等,不一样,这是外部状态,通常外部状态是通过方法传递过来的。
在说下这两个模式的代码吧
代理模式通常使用懒汉方式,代码请看2楼的,
而享元模式,可以看做是单例模式+工厂模式+合成模式,可以看下类图
推荐楼主看下,java与模式,这本书,里面讲的非常到位,相信你肯定收获很大
|
|