博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例模式的理解与应用
阅读量:6224 次
发布时间:2019-06-21

本文共 1957 字,大约阅读时间需要 6 分钟。

单例模式

 下面是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

 

转载于:https://www.cnblogs.com/baoxiaofei/p/4277871.html

你可能感兴趣的文章
几行代码搞定java生成解析二维码功能
查看>>
关于领域驱动设计(DDD)中聚合设计的一些思考
查看>>
用Jersey构建RESTful服务4--通过jersey-client客户端调用Jersey的Web服务模拟CURD
查看>>
[js插件]学习Highcharts
查看>>
创建3层的服务模板 (2)--- App-V package 和 Application Profile
查看>>
基于java.nio.channels的编程实践-I
查看>>
多线程同步基础
查看>>
学习Nagios(一):Nagios安装
查看>>
@RequestParam 的用法
查看>>
修改CentOS菜单
查看>>
消息队列
查看>>
iOS开发UI篇—无限轮播(循环展示)
查看>>
iOS集成支付宝
查看>>
全栈工程师体能备战--阅读的书籍
查看>>
用UIInterpolatingMotionEffect产生透视效果
查看>>
Redis笔记(八)Redis的持久化
查看>>
【DATAGUARD】Data Guard Wait Events
查看>>
(九十七)函数与array对象
查看>>
android 内部文件读取
查看>>
Python 对图片进行人脸识别
查看>>