您的位置:首页 > 其它

单例模式的理解与应用

2015-12-21 15:49 253 查看

java模式之单例模式

单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。

特点:

1,一个类只能有一个实例

2,自己创建这个实例

3,整个系统都要使用这个实例

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录

数据库连接都需要这样的单线程操作。一些资源管理器常常设计成单例模式

外部资源:譬如每台计算机可以有若干个打印机,但只能有一个Printer

Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干个通信端口,系统应当集中管理这些通信端口,以避免一个通信端口被两个请求同时调用。内部资源,譬如,大多数的软件都有一个(甚至多个)属性文件存放系统配置。这样的系统应当由一个对象来管理这些属性文件。

一个例子:Windows

回收站。

在整个视窗系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,而且回收站自行提供自己的实例。因此,回收站是单例模式的应用。

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

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

在新建一个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     }
33     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 的实例对象。

而在整个项目中就可以保证 该实例只被创建一次,被多次使用;故称之为单例模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: