Java入门 16 3\23

单例(Singleton)设计模式

java 允许的设置maven依赖 java允许单独的方法存在_java

  • 定义:采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。
    做法:
1. 将类的构造器访问权限设置为private。
  2. 只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中静态成员变量。
  3. 指向内部类产生的该类对象的变量也必须定义成静态的.

饿汉式

public class EHanShi
{
    public static void main(String[] args)
    {
        Bank instance = Bank.getInstance();
    }
}

class Bank{
    //1. 私有化类的构造器。
    private Bank()
    {
    }
    //2. 内部创建类的对象。
    //4. 要求此对象也必须声明为静态的 (因为静态方法只能调用静态对象)
    private static Bank instance = new Bank();
    
    //3. 提供公共的静态的方法,返回类的对象。
    public static Bank getInstance()
    {
        return instance;
    }
}

懒汉式

public class LanHanShi
{
    
}

class Bank
{
 	//1.私有化类的构造器。
    private Bank()
    {
        
    }
    
    //2.声明当前类对象,没有初始化。
    //4.此对象也必须声明为static的。
    private static Bank instance = null
        
    //3.声明public、static的  返回当前类对象  的方法。
    public Bank getInstance()
    {
        // instance = new Bank();   不对,方法的每次调用都会有新的对象,并不是唯一一个。
        if(instance == null)   //如果时null,则没有被创建过。
        {
            instance = new Bank();
        }
        return instance;
    }
}

懒汉式和饿汉式的对比

直接区分法

饿汉式: 直接new了一个对象,不一定用不用,在内存时间比较长。

懒汉式: 只有在调用方法的时候才去new一个对象,只有需要的时候才会创建。

饿汉式:

坏处: 对象加载时间过长。

好处: 是线程安全的。

懒汉式:

好处: 延迟对象的创建。

坏处:目前的写法,线程不安全。 -------->到多线程内容时,再修改。

单例设计模式的优点

  • 单例设计模式的优点:只生成一个实例,减少了系统性能的开销

main()方法的语法

  • main()方法作为程序的入口。
  • main()方法也是一个普通的静态方法。
public class MainTest()
{
	public static void main(String[] args)   /入口
	{
		Main.main(args);   (静态不用调对象,只有非静态需要调对象,用对象调用静态方法)
	}
}

class Main
{
    	public static void main (String[] args)   //静态方法   
        {
            args = new String[100];
            for(int i = 0; i < args.length; i++)
            {
                args[i] = "args_" + i;
                System.out.println(args[i]);
            }
        }
}
  • main()方法可以作为我们与控制台交互的方式。(此前,使用Scanner)
public class Main Demo
{
    public static void main(String[] args)
    {
        for(int i= 0; i < argsx.length; i++)
        {
            System.out.println("************" + args[i]);
        }
    }
}