23种设计模式-多例模式《柒个我》
对于许久不用的东西,容易忘记。百度许久,也未能找到自己所要。 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧
最近张一山拍摄的《柒个我》,演技很爆炸,可惜…
《柒个我》讲述的是猪脚有七种不同的人物性格。纳尼?一个人拥有七种人物性格???
《柒个我》在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种设计模式-多例模式《柒个我》相关推荐
- 23种设计模式——装饰者模式
文章目录 23种设计模式--装饰者模式 1.装饰者模式概述 2.装饰者模式的结构 3.装饰者模式的实现 4.装饰者模式的应用场景 23种设计模式--装饰者模式 1.装饰者模式概述 背景 有些人为了早上 ...
- 实践GoF的23种设计模式:建造者模式
本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简述 在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象 ...
- 【Go实现】实践GoF的23种设计模式:命令模式
上一篇:[Go实现]实践GoF的23种设计模式:代理模式 简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Patter ...
- 23种设计模式7_代理模式之一静态代理
23种设计模式7_代理模式之一静态代理 1 基本介绍 代理模式:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫委托模式,它是一项基本设计技巧.许多其他的模式,如状态模式.策略模式.访问者模 ...
- 23种设计模式之命令模式和策略模式的区别
文章目录 概述 命令模式 策略模式 相同点 总结 概述 命令模式和策略模式确实很相似,只是命令模式多了一个接收者(Receiver)角色.它们虽然同为行为类模式,但是两者的区别还是很明显的.策略模式的 ...
- 23种设计模式之代理模式
文章目录 代理模式的定义与特点 代理模式的结构与实现 模式的结构 模式的实现 代理模式的应用场景 代理模式的应用实例 代理模式的扩展 代理模式分类 静态代理 动态代理 在有些情况下,一个客户不能或者不 ...
- 23种设计模式----中介者模式----行为型模式
中介者模式 1.什么是中介者模式 2.中介者模式的角色 3.例子 3.1 项目结构 3.2 共同实体 3.3 抽象的中介者 3.4 抽象的被中介者 3.5 具体的中介者 3.6 具体的被中介者 3.7 ...
- 2.5万字详解23种设计模式—创建型模式(简单工厂、工厂方法、抽象工厂、单例-多线程安全详解、建造者、原型)的详细解读、UML类图
本文简述了各大设计模式,并通过UML和代码详细说明.本文大约共 2.5W 字,建议收藏.下方是本文的目录: 一.设计模式的认识 二.设计模式的分类 根据其目的 根据范围 三.设计模式的优点 四.设计模 ...
- 23种设计模式-行为型模式-观察者模式
概述 它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应.在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多 ...
最新文章
- 透视WPF 应用程序的利器
- mysql数据源找不到_mysql报出找不到目标数据源为啥? 同一个方法在其他地方调用正常...
- C语言在建筑专业的应用,新工科背景下基于OBE的《C语言程序设计》课程建设
- XCTF_Web_新手练习区:weak_auth
- 在Linux内核使用Kasan
- 飞秋 一个程序员的老作品。
- PHP仿代下狗源码-素材代下载搜索引擎系统整站打包
- 把VS Code打造成Java开发IDE,也挺爽!
- 加入HA后的完全分布式集群搭建
- java gui 保存文件_用JAVA编写一个GUI记事本程序,实现文本的输入,保存,修改,打开操作...
- dps软件计算机64位的安装,DPS数据处理系统
- dw教程php个人网页,dreamweaver制作网页的步骤
- 很火的清新PHP在线扒站程序源码
- php安装libpng,安装php:configure: error: libpng.(a|so) not found解决办法
- Matlab中的数据预处理-归一化(mapminmax)
- 【LKA】国内车道相关数据
- 远程访问内网服务器使用FRP实现内网穿透
- 论企业组织架构的扁平化管理
- Maven 标签scop值配置介绍
- 在谷歌浏览器上面安装AxueRP插件。