前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java设计模式(4)原型模式

Java设计模式(4)原型模式

作者头像
Jensen_97
发布2024-04-18 13:21:07
690
发布2024-04-18 13:21:07
举报
文章被收录于专栏:技术客栈技术客栈

前言

在软件开发的世界里,设计模式如同一本精妙的编码诗集,已经成为一种标准的编程实践。在Java编程中,设计模式很重要。是软件开发中广泛应用的一种编程方法,它可以帮助开发人员更快地编写出高效、可靠和可维护的代码。 本人将制作一个关于Java设计模式的系列文章,总共23种设计模式将以一篇一篇文章讲解,代码笔记已开源:Gitee点击跳转。在上一篇《Java设计模式(3)建造者模式》文章中,我们介绍了建造者模式。本文是这个系列的第四篇章,我们将讲解一下原型模式的实现方式、应用场景以及它的用途。

原型模式

原型模式是一种创建型设计模式,其主要目的是通过复制现有对象来创建新对象,而不是通过实例化类来创建。这种方式允许我们在运行时动态地创建对象,并且可以避免直接使用new关键字创建对象。

应用场景

  1. 对象的创建成本较大: 当一个对象的创建过程较为复杂,包含了很多初始化步骤或者涉及到其他资源的获取,使用原型模式可以避免重复进行这些初始化操作,提高对象创建的效率。
  2. 对象的初始化状态相对稳定: 如果一个对象的状态变化不大,可以通过复制一个现有对象来创建新对象,而无需重新初始化。
  3. 需要避免直接使用new关键字创建对象: 原型模式允许在运行时动态地创建对象,而无需依赖具体的类,适用于需要减少直接使用new关键字的情况。
  4. 类的实例化过程比克隆更为方便: 如果一个类的实例化过程比克隆更为方便,且类的初始化操作相对较轻,可以考虑使用原型模式。
  5. 需要避免构造函数的约束: 如果类的构造函数有一些约束条件,而克隆是一种更灵活的创建方式,可以选择使用原型模式。

代码实现

创建一个原型接口

代码语言:javascript
复制
public interface Prototype {
    public Prototype clone();
}

再创建一个具体实现

代码语言:javascript
复制
public class ConcretePrototype implements Prototype{
    @Override
    public Prototype clone() {
        return new ConcretePrototype();
    }
}

测试使用,利用克隆创建不同的对象

代码语言:javascript
复制
System.out.println("------------------------------原型模式-----------------------------");
ConcretePrototype concretePrototype = new ConcretePrototype();
System.out.println(concretePrototype);
Prototype clone = concretePrototype.clone();
System.out.println(clone);

输出

image.png
image.png

结尾

Java中的Object类实现了Cloneable接口,这就意味着Java中的任何对象都可以实现原型模式。通过实现Cloneable接口,并重写Object类中的clone()方法,可以实现原型模式。例如 ArrayListHashMap 等集合类都实现了Cloneable 接口,可以通过复制现有对象来创建新的对象。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 原型模式
    • 应用场景
    • 代码实现
    • 结尾
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档