java中的懒汉模式(单例模式)

来源:互联网 发布:网络现金赌博官网 编辑:程序博客网 时间:2024/04/30 03:09

java中的设计模式很多,比较常用的有工厂模式,懒汉模式...今天在此分享一下懒汉模式

目的:为什么要使用懒汉模式?

       大家都知道,当我们在new一个对象的时候,每个对象都会有不同的地址以及属性,这没什么错的。现在有个需求,大家都要操作同一个文件,比如A要操作 Confige.java文件,B也要操作Confige.java文件,这时候,如果我们都new Confige() ,以此来操作自己的对象,那么操作的并不是同一个对象,而是不同对象的属性,为了达到大家都操作同一个Confige.java文件,那么就需要使用一种牛逼的思想,这种思想简称“懒汉设计模式”,名字取得也算是搞笑,懒汉不懒,此举反语与本作者的wickedvalley不是恶人同理,废话不多说,开始讲解如何实现对同一个文件的操作呢?。


How:如何实现懒汉模式?

       为了完成懒汉模式,我们可以这样思考。既然可以new 对象,我们就不让大家new  这样就保证了不会出现不同的对象,首先得保证不能new对象,于是要私有化构造方法:

      private SingleTon() {}。     //第一步要私有化构造方法

      问题来了,不然大家new, 谁来new 对象 ,对象总不会自己生出来吧,这时需要我们设计者来完成new。例如:SingleTon singleton= new SingleTon();这样new完后对象只是本类多了一个属性,需要隐藏起来,private SingleTon singleton= new SingleTon();还需要对外提供公共的方法:

        public static SingleTon getInstance(){//第二步要提供公共的方法

 return singleton;
}

问题又来了,静态的方法不能访问非静态的属性,需要把前面new的对象加static关键字,于是就有:

       private static SingleTon singleton= new SingleTon();//第三步要自己new 一个私有的 静态的对象;


还不会看例子:

package com.hbut.basetest;


@SuppressWarnings("unused")
public class SingleTon {


private String name ;
private Integer age;

private static SingleTon singleton= new SingleTon();
private SingleTon() {

}
public static SingleTon getInstance(){
return singleton;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "SingleTon [name=" + name + ", age=" + age + "]";
}

}

//测试单例模式

package com.hbut.test;
import com.hbut.basetest.SingleTon;
@SuppressWarnings("unused")
public class Main {
public static void main(String[] args) {
SingleTon st= SingleTon.getInstance();
st.setName("kaxifa");
st.setAge(20);
System.out.println(st);
}
     
}

运行结果:SingleTon [name=kaxifa, age=20]

0 0
原创粉丝点击