单例模式的理解与应用

单例模式

 下面是java中使用单例模式的例子

下面这个构造函数 是单利的关键

 

单例模式用c++实现如下图

简单说就是只能被new一次,其他部分要使用业务逻辑层 只能通过将原来的对象复制

怎么复制?

 

这里的CDALFile是类,pObjFile是类的对象,作为参数传到函数init中,在init函数中对单例模式下的对象进行修改

 

这是c++中的单例 ,这是一种设计模式,

就那业务逻辑层来说, 仅能允许 业务逻辑层对象被实例化一次,简单说就是只能被new一次,

●单例模式中

 1 package zzz;
 2 
 3 //单例模式代码
 4 
 5 public class dd {
 6 
 7          public static int iCount = 0;              
 8 
 9          static class abc{
10 
11              public static abc m_a;           
12 
13              public static abc initabc()
14 
15              {//2.自定义函数initabc封装构造函数abc(),使得构造函数只能在
16 
17                //initabc()里面调用,且通过if语句使得构造函数abc()只能被调用一次
18 
19                 if (m_a == null)
20 
21       {
22 
23                   m_a = new abc();                                           
24 
25                  }
26 
27                             return m_a;
28 
29              }        
30 
31          private abc()//1.一个无参的空构造函数,且为private型,保证不为外部随意调用
32 
33             {}        
34 
35          /*测试方法:打印m_a的值
36 
37                    public boolean getM_A(){
38 
39                             System.out.println(m_a);
40 
41                             return true;
42 
43                    }
44 
45           */
46 
47    } 
48 
49          /**
50 
51           * @param args
52 
53           */
54 
55          public static void main(String[] args)
56 
57          {
58 
59                    abc.m_a = null;//构造函数是private或protected时,不能用new方法构造出一个对象,是public时可以
60 
61                    abc.initabc();
62 
63                   
64 
65                    abc test1 = abc.initabc();//调用initabc方法时其实已经跳过abc(),m_a的值是第一次构造时的值
66 
67                    //test1.getM_A();
68 
69                                     
70 
71                    abc test2;
72 
73                    test2 = abc.initabc();//调用initabc方法时其实已经跳过abc(),m_a的值是第一次构造时的值
74 
75                    //test2.getM_A();                                    
76 
77                    System.out.println("nihao");
78 
79          }
80 
81 }
82 
83  

 

posted @ 2015-02-06 19:09  BAOXF  阅读(269)  评论(0编辑  收藏  举报