message template

《一天一模式》— 原型模式

[亡魂溺海] 提交于 2020-08-16 09:29:33
一、原型模式的概念 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 二、什么时候使用原型模式 原型模式可以理解为:以一个类作为模板,克隆出无数个类,克隆出来的类与模板就再无关联。 以下场景可以使用原型模式: 构造函数较复杂,或者不想使用构造函数创建对象; 资源优化,在初始化时一个类时需要较多的资源,使用原型模式,初始化一次后,就进行克隆(不会再初始化); 性能提升,使用克隆要比使用new创建一个对象的性能高,克隆直接在内存中操作二进制流,new则需要JVM做很多的准备(加载、验证、准备、解析、初始化),所以在某些场景要大量创建相同对象时,可以节约性能; 下面就以提升性能作为场景,来用Java实现原型模式。 三、怎么使用原型模式 3.1 实现方式 首先假设一个场景,中秋节将至,系统要为全部的500万(或者更多)用户发送消息(一条条发,先不考虑其他技术实现,主要为了说明原型模式)。这种情况下,如果贸然使用for循环来通过new关键字创建500万个对象, 假设 new一个对象要花费0.04秒,那么new500万个也未必能在一天之内发送完毕。 这种情况下就可以使用原型模式来提升性能,下面看类图和代码: 代码如下: // 消息模板,继承Cloneable接口 public