包和单例模式

包(package)是Java提供的一种区别类的名字空间的机制,是类的组织方式,是一组相关类和接口的集合,它提供了访问权限和命名的管理机制。(管理代码的)

作用

  • 管理代码
  • 避免类名命名冲突

命名规则

//域名倒写.项目名.模块名
例如: cn.itsource.crm.domain

包的声明

//包的声明必须在源文件的顶部最开始位置
package cn.itsource.crm.domain;//package 要编译到的文件夹
class Test{
    /*
    然后在本文件所在地址打开Dos命令框
    1.输入 javac -d . Test.java 编译
    2.输入 java cn.itsource.crm.domain.Test 运行
    */
    public static void main(String[] args){
        System.out.println("hello");
    }
}

包的导入

//import 大包名.小包名.类名;
//import 大包名.小包名.*; *为通配符,使用到哪些类就去匹配哪些
//for example:
import java.util.Arrays
class Test{
    public static void main(String[] args){
        //声明一个数组
        int[] arr={2,45,12,15,7};
        //调用Arrays类里的方法
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}   

java已有的包分类

  • ava/ javax(java增强包)
  • java.lang (java的核心包--基本包)
  • java.util(java的工具包 --集合框架)
  • java.io(java IO包 读写文件)
  • java.net(网络编程)
  • java.awt/javax.swing(java的图形化界面GUI)

单例模式

需要设计一个类,达到的效果: 此类在整个应用中只存在一个对象

饿汉模式

设计思路

  • 构造方法私有化
  • 在类的内部创建一个对象
  • 使用一个字段保存起来
  • 提供一个方法允许外部使用该方法访问该字段
  • 提供的方法必须静态修饰,因为外部不能创建对象
  • 外部通过方法访问instance 字段,方法静态修饰,所以字段必须静态修饰
  • 字段不私有化,别人可以通过类名.instance修改子字段值,所以必须私有化

代码实现

class Test6{//单例模式之饿汉模式
    public static void main(String[] args){
        System.out.println("hello");
        //
        User user1=User.getInstance();
        User user2=User.getInstance();
        System.out.println(user1==user2);
    }
}

class User{
    private User(){//私有化构造方法
    }
    private static User one=new User();//私有化创建好的对象,使其不能通过类名.属性名调用
    public static User getInstance(){//提供公有的方法得到对象
        return one;
    }
}

懒汉模式

设计思路

  • 明确:应用程序在第一次调用方法获取单利模式对象的时候创建对象
  • 构造方法私有化
  • 设置一个A类类型的字段私有化不初始化值
  • 提供一个方法允许外部使用该方法访问该字段
  • 外部不能创建对象,所以方法必须static修饰
  • 什么时候是第一次【instance == null】
  • 当第一调用的时候判断
    • 如果instance == null :初始化instance
    • 如果instance != null : 直接返回instance

代码实现

class Test7{//单例模式之懒汉模式
    public static void main(String[] args){
        System.out.println("hello");
        User user1=User.getInstance();
        User user2=User.getInstance();
        System.out.println(user1==user2);
    }
}
class User{
    private User(){//私有化构造方法
    }
    private static User one;//私有化创建好的对象
    public static User getInstance(){
        if(one==null){//判断one是否已被创建,没有创建就创建
            one=new User();
        }
        return one;//返回创建好的对象
    }
}

你可能感兴趣的:(包和单例模式)