设计模式(Java)—Prototype模式

在Java中,我们可以使用new关键字指定类名来生成类的实例,像这样使用new来生成实例时,是必须指定类名的。但是,在开发过程中,有时候也会有”在不指定类名的前提下生成实例的需求”,例如,在以下情况下我们就不能根据类来生成实例,而是根据现有的实例来生成新的实例。
(1)对象种类繁多,无法将它们整合到一个类中时
(2)难以根据类生成实例时
生成实例的过程太过复杂,很难根据类来 生成实例,通常,在想生成一个和之前用户通过操作所创建出来的实例完全一样的实例的时候,我们会事先将用户通过操作所创建出来的实例保存起来,然后在需要时通过复制来生成新的实例。
(3)想解耦框架与生成的实例时
想要让生成实例的框架不依赖于具体的类,这时,不能指定类名来生成实例,要事先”注册一个原型的“实例,然后通过复制该实例来生成新的实例。
在Java中可以使用clone创建出实例的副本。
根据实力原型、实力模型来生成新的实例的模型就是Prototype模型。

示例程序:
将字符串放入方框中显示出来或是加上下划线显示出来。
这里写图片描述

Product接口:Product接口是复制功能的接口,该接口继承了java.lang.Cloneable接口(此接口是一个标记接口,其子类的实例都可使用clone方法来自动复制实例)

package Prototype;

//接口实现Cloneable接口,实现标记接口,实现的子类实例可使用clone方法
public interface Product extends Cloneable {
   
    public abstract void use(String s);
    public abstract Product creactClone();

}

Manager类:此类使用Product类接口来复制实例。showcase字段是java.util.HashMap类型,它保存了实例的名字和实例之间的对应关系。

package Prototype;

import java.util.HashMap;

//外部复制实例的接口,先注册,将实例对保存在HashMap中,再通过名称去除实例完成复制
public 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值