关于设计模式的学习

来源:互联网 发布:淘宝打包员招聘 编辑:程序博客网 时间:2024/05/05 08:18


前几天学习了一些java的基础知识,今天学了java的设计模式,了解到java的设计模式有23种之多,也即是说有23种解决特定类型问题的行之有效的方法。基于我现在的水平,就学习了一个单例模式。单例模式是针对一个类里只存在一个对象的情况设计出来的一个方法。

单例模式的思想是这样的:1、为了避免其他的程序过多的建立该类的对象,先禁止其他程序建立该类的对象;2、同时为了让其他程序对定义的对象能够访问,只好在本类里自定义一个对象;3、为了方便其他程序对自定义的访问,就要对外提供一些访问的形式或者是方法。

针对单例模式的思想,有3个分别与之对应的步骤。1、将类的构造方法私有化;2、在类里创建一个本类的对象(静态的);3、提供一个方法可以获取这个对象。

为了更好的加强对单利模式的理解,现在我通过单例模式的两种方式分别进行说明。

一、“饿汉式”:就是在类里先生成对象的方式。

public class StudentE {
    private int age;
    //1.私有构造方法,不允许外部程序建立该类的对象
    private StudentE(int age)
    {
        this.age=age;
    }
    //2.在类的内部建立该类的对象
    private static StudentE s=new StudentE(22);
    //3.为了方便其他程序对该对象的访问,提供一个对外的访问方法
    public static StudentE getStudentE()
    {
        System.out.println("结果");
        return s;
    }
}

class StudentDemo
{
    public static void main(String[] args)
    {
        //外部程序通过类名.方法名访问对外的方法
        StudentE.getStudentE();         
    }
}


二、"懒汉式"单例模式:当对象被调用时候才初始化生成,也叫做对象的延时加载。

public class StudentL {
    private int age;
  //1.私有构造方法,不允许外部程序建立该类的对象
    private StudentL(int age)
    {
        this.age=age;
    }
  //2.在类的内部先建立该类的一个变量,但是该对象并没有生成
    private static StudentL s=null;
  //3.为了方便其他程序对该对象的访问,提供一个对外的访问方法,并加锁
    public static synchronized StudentL getStudentL()
    {
        //判断s是否生成了,如果没有生成,那么就在此时生成改对象
        if(s==null)
            s=new StudentL(22);
        return s;        
    }
}

class StudentLDemo
{
    public static void main(String[] args)
    {
        
        StudentL.getStudentL();
    }
}


原创粉丝点击