JAVA实现原型模式

环境:

  邮件复制功能,邮件对象包含的内容较多(发送者、接收者、标题、内容、日期等),对于已经创建好的邮件对象,可以通过复制的方式创建一个新的邮件对象,如果需要改变某部分内容,无须修改原始的邮件对象,只需要修改复制后得到的邮件对象即可

问题:

  需要创建多个相同或者相似的对象且各对象之间是相互独立的,这个类结构复杂(如构造函数极复杂),使用New实例化对象耗时长,代价高

解决方案:

  通过复制现有的对象(自身)来创建新的对象(原型模式)

角色:

Prototype(抽象原型类):针对抽象原型类编程,用户可以根据需要选择具体的原型类,系统具有较好的扩展性,增加或者更换原型类都很方便

ConcretePrototype(具体原型类)

Client(客户类)

 

Prototype.java

JAVA实现原型模式_第1张图片

 

ConcretePrototypeA.java

JAVA实现原型模式_第2张图片

ConcretePrototypeB.java 比如这是带有邮件日期或邮件附件的邮件
JAVA实现原型模式_第3张图片

Client.java
JAVA实现原型模式_第4张图片

结果
JAVA实现原型模式_第5张图片

你可能感兴趣的:(设计模式)