编程开发中为什么要用到单例模式?

单例模式的存在,一则,解决多线程并发访问的问题。二则节约系统内存,提交系统运行的效率,提高系统性能。

单例模式的代码:

 1 public class Printer {
 2     private static Printer printer =null;//创建一个私有的全局变量
 3     /*
 4      * 如果有多线程并发访问时,上锁,让其排队等候,一次只能一人用。
 5      */
 6     public static synchronized Printer getPrinter(){
 7         if(printer==null){//如果为空,创建本实例
 8             printer = new Printer();
 9         }
10         return printer;
11     }
12     /*
13      * 构造私有化,保证在系统的使用中,只有一个实例
14      */
15     private Printer(){
16         
17     }
18 }
View Code

从代码上来分析,单例模式,首先向外提供了一个可被访问的实例化的对象,如果没有此对象时,该printer类创建一个。如果遇到多线程并发访问,加上关键字Synchronized,上锁让没有持有该对象的类处于等待状态。当前持有该printer的线程任务结束之后,处于等待中的线程才能逐个去持有该实例,去操作其方法。这样的一个过程 在编程中被称为单例模式。
如果在系统中不使用单例模式的话,在碰到多线程访问的时候,printer就会给要请求的类,分别在内存中new出一个printer对象,让这些请求的类去做print方法。这样大量占有内存,就会导致系统运行变慢,像电脑的CPU一样,占有量极高,电脑卡死不动的感觉。因为系统的硬件设施需求变动量小,所以只能想出一个节约成本 的方法就是,单例模式,让多线程处于等待的状态,一个 一个的去解决,这样,即节约内存,提交了运行的成本。也就是单例存在的意义。

 

posted on 2014-10-15 21:39  风流书生  阅读(6582)  评论(0编辑  收藏  举报