单例 及其案例

单例:就是一种规范而已,不是必须的知识点或者关键字,仅仅是一种比较好的习惯(用途比较广泛)。
作用:1、将规范好的数据传到已经开辟好的内存里,只能存一个,如果再往里面存就会把上一个数据替代。—传值
2、全局访问点–感觉就是将一个空间给他static了一样(不准确)。

一般分两类:饿汉式、懒汉式(还有几种,我还不会)

普通方法:

总结:就是比普通方法多了三句话

//**普通方法**
public class DanLi {
    public static void main(String[] args) {
        Content cont1 = new Content("马云","男","仲裁",168,50000);
        cont1.Show();
    }
}
class Content{
    private String name;
    private String sex;
    private String works;
    private int height;
    private int wage;
    public void Show(){
        System.out.println("大家好,这位是"+this.name+",是我们公司的"+
                this.works+",可以看出"+this.sex+"身高:"+this.height+
                "\n薪资在"+this.wage);
    }
    public Content(String name,String sex,String works,int height,int wage){
        this.wage=wage;
        this.height=height;
        this.sex=sex;
        this.works=works;
        this.name=name;
    }
}
//**变成单例模式**
public class demo5 {
    public static void main(String[] args) {
        Content.getInstance().Show();
    }
}
class Content{
    private static Content content=new Content("马云","男","仲裁",168,50000);
    public static Content getInstance(){
        return content;
    }
    private String name;
    private String sex;
    private String works;
    private int height;
    private int wage;
    public void Show(){
        System.out.println("大家好,这位是"+this.name+",是我们公司的"+
                this.works+",可以看出"+this.sex+"身高:"+this.height+
                "\n薪资在"+this.wage);
    }
    public Content(String name,String sex,String works,int height,int wage){
        this.wage=wage;
        this.height=height;
        this.sex=sex;
        this.works=works;
        this.name=name;
    }
}

**
不建议写成这个模式的单例,虽然按照格式他叫单例,
但是他变成了马云的单例,而不是所有人的
应该将单例写成一个类
**

实际代码

public class DanLi {
    public static void main(String[] args) {
        Content cont1 = new Content("马云","男","仲裁",168,50000);
        Content cont2 = new Content("马云1","男","仲裁",168,50000);
        Instance.getInstance().setContent(cont1);
        Instance.getContent().Show();
        //写成Instance.Show();也行
        System.out.println(Instance.getInstance());
        Instance.getInstance().setContent(cont2);
        Instance.getContent().Show();
        System.out.println(Instance.getInstance());
//        System.out.println((Instance.getInstance().setContent(cont1))==(Instance.getInstance().setContent(cont2)));
    }
}
class  Instance {
    //饿汉式
//    private static Instance instance = new Instance();
//    public static Instance getInstance() {
//        return instance;
//    }
    //懒汉式
    private static Instance instance = null;

    public static Instance getInstance() {
        if (instance == null) {
            instance = new Instance();
        }
        return instance;
    }

    private Instance() {
    }

    private static Content content;

    public static void setContent(Content content) {
        Instance.content = content;
    }

    public static Content getContent() {
        return content;

    }
}
class Content{
    private String name;
    private String sex;
    private String works;
    private int height;
    private int wage;
    public void Show(){
        System.out.println("大家好,这位是"+this.name+",是我们公司的"+
                this.works+",可以看出"+this.sex+"身高:"+this.height+
                "\n薪资在"+this.wage);
    }
    public Content(String name,String sex,String works,int height,int wage){
        this.wage=wage;
        this.height=height;
        this.sex=sex;
        this.works=works;
        this.name=name;
    }
    public void setName(String name){
        this.name=name;
    }public void setHeight(int height){
        this.height=height;
    }public void setSex(String sex){
        this.sex=sex;
    }public void setWorks(String works){
        this.works=works;
    }public void setWage(int wage){
        this.wage=wage;
    }
    public String getName(){
        return this.name;
    }public String getSex(){
        return this.sex;
    }public String getWorks(){
        return this.works;
    }public int getHeight(){
        return this.height;
    }public int getWage(){
        return this.wage;
    }
}

在这里插入图片描述
private static Instance instance = null;
static用来将singleInstance变成全局存在
final用来固定变量singleInstance,不让他的值发生变化
private用来不被外面的人看见
private SingleInstance(){}
对构造方法的私有化
就是为了不被外面的人可以用到
防止被main函数多次调用创建多个函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值