博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多例设计模式
阅读量:4290 次
发布时间:2019-05-27

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

爱Java
2016-10-01 09:34

多例设计模式一 .多例设计模式定义

多例设计模式就是存在多个对象实例,供外部应用裯用,比喻数据库连接池。

二.多例模式静态类图

多例设计模式

三.多例模式代码实现

1.多例模式核心类

Java代码

  1. package com.demo.multipleton;

  2. import java.util.ArrayList;

  3. /**

  4. * 多例模式

  5. *

  6. * @author

  7. *

  8. */

  9. public class Multipleton {

  10. // 多例数量

  11. private static final int N = 10;

  12. // 存放N个实例对象的容器

  13. private static ArrayList<Multipleton> list = new ArrayList<Multipleton>(N);

  14. // 每个对象的序号 标识

  15. private int no;

  16. // 私有构造方法 防止外界应用程序实例化

  17. private Multipleton(int no) {

  18. this.no = no;

  19. System.out.println("-- Create Multipleton Object[" + no + "]!");

  20. }

  21. // 实例化N个对象实例

  22. static {

  23. // 添加Multipleton对象实例

  24. for (int i = 0; i < N; i++) {

  25. list.add(new Multipleton(i));

  26. }

  27. }

  28. /**

  29. * 随机获得 实例对象

  30. */

  31. public static Multipleton getRandomInstance() {

  32. // 获得随机数字

  33. int num = (int) (Math.random() * N);

  34. // 获得list中的对象实例

  35. return list.get(num);

  36. }

  37. public int getNo() {

  38. return no;

  39. }

  40. public void setNo(int no) {

  41. this.no = no;

  42. }

  43. }

2.多例模式客户端

Java代码

  1. package com.demo;

  2. import com.demo.multipleton.Multipleton;

  3. /**

  4. * 客户端应用程序

  5. *

  6. * @author

  7. *

  8. */

  9. public class MultipletonClient {

  10. /**

  11. * @param args

  12. */

  13. public static void main(String[] args) {

  14. // 获得Multipleton对象实例

  15. Multipleton multipleton = Multipleton.getRandomInstance();

  16. System.out.println("multipleton:" + multipleton.getNo());

  17. // 在次获得Multipleton对象实例

  18. Multipleton multipleton2 = Multipleton.getRandomInstance();

  19. System.out.println("multipleton2:" + multipleton2.getNo());

  20. // 比较两个对象是否是同一个对象实例

  21. if (multipleton == multipleton2) {

  22. System.out.println("--这是同一个对象!");

  23. } else {

  24. System.out.println("--这是不同的对象!");

  25. }

  26. }

  27. }

3.运行结果

-- Create Multipleton Object[0]!

-- Create Multipleton Object[1]!

-- Create Multipleton Object[2]!

-- Create Multipleton Object[3]!

-- Create Multipleton Object[4]!

-- Create Multipleton Object[5]!

-- Create Multipleton Object[6]!

-- Create Multipleton Object[7]!

-- Create Multipleton Object[8]!

-- Create Multipleton Object[9]!

multipleton:2

multipleton2:2

--这是同一个对象!

4 从上面程序运行结果,可以得出两个结论

4.1 实例化N个实例对象的过程只执行一次。

4.2 随机获得Multipleton对象。

学习Java的同学注意了!!!

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:184625948【长按复制】 我们一起学Java!

转载地址:http://pcggi.baihongyu.com/

你可能感兴趣的文章
日常项目测试用例检查点(来自一线测试人员的吐血总结)
查看>>
网站建设之域名注册和域名备案
查看>>
解决bootstrap时间输入框总被浏览器记住的记录遮挡住的问题
查看>>
git将一个分支完全覆盖另外一个分支如:dev分支代码完全覆盖某一个开发分支
查看>>
elasticsearch7.3版本环境搭建(二)可视化管理后台kibana的安装和配置
查看>>
elasticsearch7.3版本环境搭建(三)可视化管理后台kibana的汉化(设置中文界面)
查看>>
记录一次DDos攻击实战
查看>>
分享一首小诗--《致程序员》
查看>>
为什么百度只抓取了首页而不抓取我的网站的内页的原因分析
查看>>
年薪170万的阿里P8级员工征婚有感--话说阿里真有钱,这员工要求的条件真多
查看>>
又是一年桂花飘香时,祝我们伟大的祖国70年华诞更加繁荣昌盛,祝大家国庆节快乐
查看>>
谷歌浏览器chrome即将在2020年底停止支持flash,我们程序员该怎么办
查看>>
如何将数据采集到 Elasticsearch 服务
查看>>
面试官:mysql表设计要注意什么?
查看>>
一些精致小众网站收集录
查看>>
计算机科学探秘之linux发展史
查看>>
程序员每天早上早来10分钟的好处
查看>>
互联网30年,泡沫如梦,一个个泡沫和风口过后,会是什么样的结局
查看>>
升级centos 6.8 服务器的gcc
查看>>
API网关在微服务架构中的应用,这一篇就够了
查看>>