单例模式的理解与应用
单例模式
下面是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