单例模式
下面是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 args52 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