对于许久不用的东西,容易忘记。百度许久,也未能找到自己所要。 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧

最近张一山拍摄的《柒个我》,演技很爆炸,可惜…

《柒个我》讲述的是猪脚有七种不同的人物性格。纳尼?一个人拥有七种人物性格???

《柒个我》在java种就属于多例模式。那么该怎么用代码描述呢?

首先明确一点,多例模式是有数量限制的,否则跟直接new没有区别,那就失去了意义。

1.首先定义《柒个我》

package com.example.yancy.model;import java.util.ArrayList;
import java.util.List;
import java.util.Random;/*** @author yancy* 人物精神分裂,出现七个不同性格的我*/
public class SevenOfMe {/*** 最多只能 柒個我,否则失去了多例模式的意义*/private static int maxMm = 7;/*** 不同人物的性格*/private static List<SevenOfMe> meList = new ArrayList<>(maxMm);/*** 出现在眼前的人物 默认 沈亦臻 本人格*/private static int defaultMe = 0;/***  创建柒个我*/static {meList.add(new SevenOfMe("沈亦臻\n" +"简介  沈氏集团第三代继承人【是本人格】"));meList.add(new SevenOfMe("崔皓月\n" +"简介  沈亦臻的暴力人格"));meList.add(new SevenOfMe("朱长江\n" +"简介  沈亦臻的自由人格【爱喝酒,爱弄炸弹的】"));meList.add(new SevenOfMe("莫晓俊\n" +"简介  是一个天才少年喜欢琴音书画,孤单爱想不开的人格"));meList.add(new SevenOfMe("莫晓娜\n" +"简介  少女人格爱追星,恋爱,喜欢白向荣的人格。"));meList.add(new SevenOfMe("X先生\n" +"简介 神秘人格"));meList.add(new SevenOfMe("星星\n" +"简介 幼年人格"));}/*** 柒个我,不允许再次增加,否则失去意义。*/private SevenOfMe() {}private SevenOfMe(String info) {}/*** 随机看到的人物** @return*/public static SevenOfMe getInstance() {Random random = new Random();defaultMe = random.nextInt(maxMm);return meList.get(defaultMe);}}

女主就比较悲惨了,同七个人打交道。原谅我不厚道的笑了。女主也不管看到是谁,反正是自己的未来老公?

   /*** 女主一周之内会遇见谁了,好期待(Android studio)*/@Testpublic void meetTest() {for (int i = 0; i < 7; i++) {SevenOfMe sevenOfMe = SevenOfMe.getInstance();String info = sevenOfMe.getInfo();System.out.println("女主遇到的人物是谁呢? -- " + info);}}

打印结果

女主遇到的人物是谁呢? -- 莫晓娜
简介  少女人格爱追星,恋爱,喜欢白向荣的人格。
女主遇到的人物是谁呢? -- 莫晓俊
简介  是一个天才少年喜欢琴音书画,孤单爱想不开的人格
女主遇到的人物是谁呢? -- 沈亦臻
简介  沈氏集团第三代继承人【是本人格】
女主遇到的人物是谁呢? -- 朱长江
简介  沈亦臻的自由人格【爱喝酒,爱弄炸弹的】
女主遇到的人物是谁呢? -- 崔皓月
简介  沈亦臻的暴力人格
女主遇到的人物是谁呢? -- X先生
简介 神秘人格
女主遇到的人物是谁呢? -- 朱长江
简介  沈亦臻的自由人格【爱喝酒,爱弄炸弹的】

咦,星星呢?我要见星星,怎么办呢?很简单,增加 一个静态工厂方法。

 public static SevenOfMe getInstance(int pos) {if (pos > maxMm || pos < 0) {throw new RuntimeException("您呼叫的用户不在服务区");}return meList.get(pos);}

这样女主想看到谁就看到谁了。

23种设计模式-多例模式《柒个我》相关推荐

  1. 23种设计模式——装饰者模式

    文章目录 23种设计模式--装饰者模式 1.装饰者模式概述 2.装饰者模式的结构 3.装饰者模式的实现 4.装饰者模式的应用场景 23种设计模式--装饰者模式 1.装饰者模式概述 背景 有些人为了早上 ...

  2. 实践GoF的23种设计模式:建造者模式

    本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简述 在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象 ...

  3. 【Go实现】实践GoF的23种设计模式:命令模式

    上一篇:[Go实现]实践GoF的23种设计模式:代理模式 简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Patter ...

  4. 23种设计模式7_代理模式之一静态代理

    23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...

  5. 23种设计模式之命令模式和策略模式的区别

    文章目录 概述 命令模式 策略模式 相同点 总结 概述 命令模式和策略模式确实很相似,只是命令模式多了一个接收者(Receiver)角色.它们虽然同为行为类模式,但是两者的区别还是很明显的.策略模式的 ...

  6. 23种设计模式之代理模式

    文章目录 代理模式的定义与特点 代理模式的结构与实现 模式的结构 模式的实现 代理模式的应用场景 代理模式的应用实例 代理模式的扩展 代理模式分类 静态代理 动态代理 在有些情况下,一个客户不能或者不 ...

  7. 23种设计模式----中介者模式----行为型模式

    中介者模式 1.什么是中介者模式 2.中介者模式的角色 3.例子 3.1 项目结构 3.2 共同实体 3.3 抽象的中介者 3.4 抽象的被中介者 3.5 具体的中介者 3.6 具体的被中介者 3.7 ...

  8. 2.5万字详解23种设计模式—创建型模式(简单工厂、工厂方法、抽象工厂、单例-多线程安全详解、建造者、原型)的详细解读、UML类图

    本文简述了各大设计模式,并通过UML和代码详细说明.本文大约共 2.5W 字,建议收藏.下方是本文的目录: 一.设计模式的认识 二.设计模式的分类 根据其目的 根据范围 三.设计模式的优点 四.设计模 ...

  9. 23种设计模式-行为型模式-观察者模式

    概述 它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应.在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多 ...

最新文章

  1. 透视WPF 应用程序的利器
  2. mysql数据源找不到_mysql报出找不到目标数据源为啥? 同一个方法在其他地方调用正常...
  3. C语言在建筑专业的应用,新工科背景下基于OBE的《C语言程序设计》课程建设
  4. XCTF_Web_新手练习区:weak_auth
  5. 在Linux内核使用Kasan
  6. 飞秋 一个程序员的老作品。
  7. PHP仿代下狗源码-素材代下载搜索引擎系统整站打包
  8. 把VS Code打造成Java开发IDE,也挺爽!
  9. 加入HA后的完全分布式集群搭建
  10. java gui 保存文件_用JAVA编写一个GUI记事本程序,实现文本的输入,保存,修改,打开操作...
  11. dps软件计算机64位的安装,DPS数据处理系统
  12. dw教程php个人网页,dreamweaver制作网页的步骤
  13. 很火的清新PHP在线扒站程序源码
  14. php安装libpng,安装php:configure: error: libpng.(a|so) not found解决办法
  15. Matlab中的数据预处理-归一化(mapminmax)
  16. 【LKA】国内车道相关数据
  17. 远程访问内网服务器使用FRP实现内网穿透
  18. 论企业组织架构的扁平化管理
  19. Maven 标签scop值配置介绍
  20. 在谷歌浏览器上面安装AxueRP插件。

热门文章

  1. Python一行代码实现1到100之和
  2. Vocabulary and Phrase in Paper of Computer Vision (Updating)
  3. 由浅入深 学习 Android Binder(十一) binder线程池
  4. 去中心化应用程序 (dApps) 发展现状及趋势回顾
  5. 802.11ac双频
  6. python好学吗-非科班出身自学Python好学吗?
  7. Android开发-视图view讲解
  8. vuepress-theme-reco自动生成侧边栏
  9. PS各个工具的字母快捷键和英文全名
  10. JAVA 查看线程、内存