在JAVA和android中常用的单例模式

在很多开发中,项目为了节约资源,都把一个类的构造函数变为私有化,这样整个项目中就不能创建多个实例,这样的方法我们称为单例模式

 

 

现在通过代码来简介下这个单例模式:

 

 

在新建一个 java 项目后,创建一个实体类 User.java, 和测试类, main.java

 

 

代码如下:

1 public class User {
 2     private static User user;
 3    
 4     //添加该实例的属性
 5     private String name;
 6     private String sex;
 7     private String age;
 8     /**
 9      * @return
10      * 初始化一个实例
11      */
12     public static User getInstens(){
13         if(user == null){
14             user = new User();
15         }
16         return user;
17     }
18    
19     /**
20      *为了实现 整个项目中,该对象的实例只有一个(有利于节约资源),从而私有化该实例的构造方法
21      *这样就没办法在其他地方new 出一个实例
22      */
23     private User(){
24        
25     }
26 
27     public User getUser() {
28         return user;
29     }
30     public void setUser(User user) {
31         this.user = user;
32     }
     public String getName() {
34         return name;
35     }
36     public void setName(String name) {
37         this.name = name;
38     }
39     public String getSex() {
40         return sex;
41     }
42     public void setSex(String sex) {
43         this.sex = sex;
44     }
45     public String getAge() {
46         return age;
47     }
48     public void setAge(String age) {
49         this.age = age;
50     }
51 
52 }

 

 

再添加 main 代码来测试:

1 public class main {
2     public static void main(String ages[]) {
3        
4         User user = User.getInstens();
5         user.setName("单列模式");
6         System.out.println(user.getName());
7     }
8 }

 

 

这里就得 main.java 就可以直接通过 User.getInstens() 来拿到 User 的实例对象。

而在整个项目中就可以保证 该实例只被创建一次,被多次使用;故称之为单例模式

全部评论
public static User getInstens(){ if(user == null){ user = new User(); } return user; } 该种方式称为懒汉式,可以将单例的创建延迟到类被使用时,但是当在多线程环境下使用时会出现问题,会出现实例化多个User情况。 还有一种方式叫饿汉式 private static User user = new User(); 这种方式单例在类被加载的时候就创建,虽然有可能会造成资源浪费,不过相对于多线程环境下使用的问题还是这种方式比较好。 同时还有一种方式叫双重锁吧貌似,也就是通过加锁去保证多线程环境的正确性。
点赞 回复 分享
发布于 2015-07-07 12:51

相关推荐

不愿透露姓名的神秘牛友
10-29 21:14
疯犬丨哈士奇:喜欢你的人会主动表白,对你有想法的人会很主动,所以要你的公司不会吊着你所以懂了吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务