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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙万利 中级黑马   /  2012-11-29 00:48  /  1389 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

方法被调用要么 对象调用(new),要么类名调用
要使用类调用:
那么被调用方法和成员都必须是静态的
通过方法访问成员,那么成员不对外公开,属性私有化
模式一:
/*
    设计模式:解决某一类问题最行之有效的方法
    java中23种设计模式之:
    单例设计模式:解决一个类在内存中只存在一个对象
   
    想要保证对象的唯一:
    1.为了避免其他程序过多建立该对象,先进制其他程序建立该类对象
    2.为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象
    3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式
      
    这三部怎么用代码体现?
    1.将构造函数私有化
    2.在类中创建一个本类对象
    3.提供一个方法可以获取该对象
   
    对于事物该怎么描述,还怎么描述
    当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可
*/
class Single
{
    private int num;
    public void setNum(int num)
    {
       this.num = num;
    }
    public int getNum()
    {
       return num;
    }
    private Single(){} //1.第一步
    //Single(){}
    private static Single s = new Single(); //类名调用要静态 //2.第二步
    public static Single getInstance()//类名调用要静态//3.第三步
    {
       return s;
    }
}
class SingleDemo
{
    public static void main(String[] args)
    {
       //Single s = Single.getInstance();//类名调用
       //Single s1 = new Single();
       //Single s2 = new Single();
       //s1.setNum(30);
       //System.out.println(s2.getNum());//输出结果为0,因为new s1对象和new s2是不同对象
      
       //下面通过单例模式调用,类调用指向了同一个对象;单例的好处
       //Single s1 = Single.getInstance();
       //Single s2 = Single.getInstance();
       //s1.setNum(30);
       //System.out.println(s2.getNum());
             
    }
}
模式一总结:
先初始化对象,
称为:饿汉式:  最简单,开发使用
Single类一进内存,就已经创建对象,要给Single s初始化

模式二
//对象的方法调用时,才初始化。也叫对象的延迟加载;称为:懒汉式
//Single类进内存,对象还不存在,只有在调用getInstance方法时,才建立对象
class Single
{
   
    private Single(){} //1.第一步
    private static Single s = null; //类名调用要静态 //2.第二步
    public static Single getInstance()//类名调用要静态//3.第三步
    {
       //外层if判断,是判断是否拿锁的过程,锁定程序synchronized(Single.class)
       //内层判断,是判断后建立对象的过程
       if(s==null)
       {
           synchronized(Single.class)
           {
              if(s==null)
                 s= new Single();
           }
       }
       return s;  
    }
}

总结:
开发时定义单例,建议使用饿汉式

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马