文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java设计模式之原型设计示例详解

2024-04-02 19:55

关注

简单说一下(定义)

什么是原型模式:原型模式是用于创建重复的对象,同时又能保证性能。用一个已经创建的实例作为原型,通过复制该原型对象来创建一个或者多个和原型相同或者相似的新对象

举例说明:我们都玩过打飞机的游戏,敌军的飞机可谓是数不胜数,但是如果每出一架敌机都要重新实例化的话,那么自然我们的功能很复杂。所以这个时候我们的原型模式就派上用场了,只实例化一架飞机出来,其他的照着他复制就可以啦

稍微夸一下(优缺点)

原型模式优点:

1.当创建新的对象实例比较复杂时,使用原型模式通过一个已有实例可以提高新实例创建效率
2.可以动态增加或者减少产品类
3.原型模式提供了简单的创建结构
4.可以使用深克隆的方式保存对象的状态

原型模式缺点:
1.对已有类进行改造时,必须修改其源码,违背了开闭原则
2.在实现深克隆时需要编写较为复杂的代码

顺便提一下(适用场景)

原型模式的适用场景:
1.对象种类繁多,无法将他们整合到一个类的时候
2.难以根据类生成实例时
3.想解耦框架与生成的实例时

着重讲一下(深、浅克隆)

在原型模式中有两个概念需要讲下,就是深克隆与浅克隆。顾名思义浅克隆只是复制了基础属性(如八大基本类型),然而引用类型实际上没有复制,只是将对应的引用给复制了(复制地址)。
 

浅克隆:如果原型对象的成员变量是值类型(如八大基本类型),那么就是直接复制;如果是复杂的类型,就只是复制对应的内存地址。(网上当个图)
换言之,就是复杂类型的成员变量(String,枚举等)用的是一个,修改了克隆对象的原型对象也会,他们是共用的(类似于响应式)。而值类型不是共用的。

在这里插入图片描述

深克隆:深克隆就是什么都是单独的,全部复制,复制之后的全部各自独立。修改克隆对象对于原型对象没有任何影响(浅克隆中修改克隆对象,原型对象跟着变)。

在这里插入图片描述

多多用一下(结构、代码实现)

模式结构

原型模式主要包含三个部分:具体原型类、抽象原型类、访问类
具体原型类:实现抽象原型类的clone()方法,是可被复制的对象
抽象原型类:规定了具体原型对象必须实现的接口
访问类:使用具体原型类中的clone()方法类复制新的对象
一图走天下:

在这里插入图片描述

代码实现

1.创建具体原型类RealizeType.java

public class RealizeType implements Cloneable {
    RealizeType(){
        System.out.println("原型创建成功");
    }
    public Object clone() throws CloneNotSupportedException {
        System.out.println("具体原型复制成功");
        return super.clone();
    }
}

2.原型模式测试类PrototypeTest.java

public class PrototypeTest {
    public static void main(String[] args) throws CloneNotSupportedException {
        RealizeType obj = new RealizeType();
        RealizeType obj1 = (RealizeType) obj.clone();
        System.out.println("obj==obj1?"+(obj==obj1));
    }
}

3.运行结果

原型创建成功
具体原型复制成功
obj==obj1?false

以上就是Java设计模式之原型设计示例详解的详细内容,更多关于Java原型设计模式的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯