A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪小照 中级黑马   /  2012-9-25 13:07  /  1458 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 汪小照 于 2012-9-25 13:55 编辑

请问什么事享元设计模式呢?最好能说具体点,希望用代码来反映享元设计模式的这种思想?
有一家公司出现了这样的面试题

4 个回复

正序浏览
嗯,哥们,谢了,我明白了。
回复 使用道具 举报
嗯,哥们,谢了,我明白了。
回复 使用道具 举报
    总结了一下张老师讲的享元模式:(flyweight) 有很多个小的对象,它们有很多属性相同,把它们变成一个对象,不同的属性变成方法的参数,称之为外部状态,相同的属性称之为内部状态。
    享元模式的使用前提:
    1,当我们发现某个类型的对象有大量的实例时,我们是否可以对这些实例进行分类,经过分类后,我们发现只有很少的类别的情况下。
    2,我们发现通过使用享元模式后能够提高系统的性能和不会带来更多的复杂度时。
    享元模式一般是给出本地内存资源节省的一个方案,并不适合互联网上的分布式应用的情况,不过享元模式对于排他性的要求资源的控制,是个不错的选择的。
举例:
public static void main(String[] args) {

        Integer iObj = 3;
        System.out.println(iObj + 12);
        
        String s1 = new String("abc");
        String s2 = new String("abc");        
        Integer i1 = 137;
        Integer i2 = 137;
        

        System.out.println(i1 == i2);
        
        Integer i3 = Integer.valueOf(213);
        Integer i4 = Integer.valueOf(213);
        System.out.println(i3==i4);
        
    }

回复 使用道具 举报
老师的视频里讲的是:在访问比较小的,常用的一些数,比如-128到127时
即使用Integer num1=3;    Integer num2=3;那么用==号比较num1和num2时,也是相等的
这是因为java中对这中经常使用,且范围较小的内容,单独放在一段内存中,以方便调用。
但是,如果是用的Integer num1=new Integer(3); Integer num2=new Integer(3);
则用==号则不相等,这个要注意。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马