包和单例模式

包(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;//返回创建好的对象
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,550评论 1 32
  • JAVA序列化机制的深入研究 对象序列化的最主要的用处就是在传递,和保存对象(object)的时候,保证对象的完整...
    时待吾阅读 11,131评论 0 24
  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 1,612评论 0 6
  • 校区:科学创想乐高机器人茂业校区 时间:周六9.00_10.00 学员:赵欣阳 任教老师:王老师 教学目标: 1....
    可以v笑阅读 1,125评论 0 0
  • 不知道为什么,我看老公会时不时的有情绪。比如他下班回来,加班晚了,我不开心。猫厕所他说了收拾,却不动,我窝火。看他...
    猫咪淘淘阅读 208评论 0 0

友情链接更多精彩内容