zoukankan      html  css  js  c++  java
  • 编程中为什么要用到单例模式?

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

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

    单例模式的代码:

     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一样,占有量极高,电脑卡死不动的感觉。因为系统的硬件设施需求变动量小,所以只能想出一个节约成本 的方法就是,单例模式,让多线程处于等待的状态,一个 一个的去解决,这样,即节约内存,提交了运行的成本。也就是单例存在的意义。

  • 相关阅读:
    六、开闭原则
    五、迪米特法则
    绘制禁用图像
    程序自启动的问题
    金山也开始做“QQ”了
    TextBox只能输入数字的两种解决办法
    Chrome的一点小问题
    OOAD读书笔记(三):需求变化
    OOAD读书笔记(六):如何解决大问题
    J道,学习分析设计的Java社区
  • 原文地址:https://www.cnblogs.com/shuanlei/p/4027424.html
Copyright © 2011-2022 走看看