GoF23种设计模式之创建型模式之原型模式

设计模式之创建型5种 设计模式之所以被归纳为23种,而非其他数量,源于GoF(Gang of Four)在1994年的系统性总结和分类。 阅读详情

一、概述

        用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

二、适用性

1.当一个系统应该独立于它的产品创建、构成和表示的时候。

2.当要实例化的类是在运行时刻指定的时候,例如:通过动态装载。

3.为了避免创建一个与产品类层次平行的工厂类层次的时候。

4.当一个类的实例只能有几个不同状态组合中的一种的时候。

        建立相应数目的原型并克隆它们可能要比每次用合适的状态手工实例化该类更方便一些。

三、参与者

1.Prototype:声明一个克隆自身的接口。

2.ConcretePrototype:实现一个克隆自身的操作。

3.Client:让一个原型克隆自身从而创建一个新的对象。

四、类图


五、示例

Prototype

package cn.lynn.prototype;

public class Snake implements Cloneable {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Object clone() {
        try {
            return super.clone();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

}
ConcretePrototype

package cn.lynn.prototype;

public class WhiteSnake extends Snake {

    public WhiteSnake(String name) {
        setName(name);
    }

}

Client
package cn.lynn.prototype;

public class Client {

    public static void main(String[] args) {
        Snake snake1 = new WhiteSnake("我是白素贞");
        Snake snake2 = (Snake) snake1.clone();
        System.out.println(snake1.getName());
        System.out.println(snake2.getName());
    }

}
Result
我是白素贞
我是白素贞
尚学堂高琪GOF23设计模式代码 + 资料(23设计模式资料+代码分类存储) 此资料是对尚学堂高琪老师所讲解的GOF23设计模式的专门整理,每个设计模式的资料+高琪老师编写的入门code都是分类存储,并且包括UML设计图遇到需要的设计模式可以在相关的文件夹查找。 立即下载

相关推荐

手把手教你用YOLOv5和OpenCV实现DNF全自动刷图(含自动拾取与Boss战逻辑)

本文详细介绍了如何使用YOLOv5和OpenCV构建DNF全自动刷图系统,包括环境配置、游戏画面采集、目标检测、场景导航及操作控制等核心模块。通过实战案例,帮助开发者掌握游戏自动化技术,实现自动拾取与Boss战逻辑,提升游戏效率。

weixin_42628941的博客 446

GOF23设计模式之原型模式与创建型模式总结

 原型模式prototype   原型模式又称做克隆模式,拷贝模式。实际上是一个内存的操作   原型模式 --通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。 就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具有原型对象的特点。 克隆类似于new,但是又不同

不当初 740

EMQX 结合MySQL实现精细化ACL权限管理实战

本文详细介绍了如何通过EMQX结合MySQL实现精细化的ACL权限管理,提升物联网设备接入和消息传输的安全性。内容包括环境准备、基础配置、权限规则设计技巧以及高级应用与性能优化方案,帮助开发者快速掌握动态生效、便于管理的权限控制方法。

weixin_28683689的博客 196

GOF23设计模式之原型模式之实现

 /**  * Sheep类,测试原型模式之浅拷贝  * 时间:2015年4月1日09:44:29  */ package com.bjsxt.cn.prototype; import java.io.Serializable; import java.util.Date; public class Sheep implements Cloneable, Seria

不当初 645

VHDL六层电梯控制器及仿真

六层电梯电梯 设计要求:设计一个六层电梯控制系统要求有超载、关门中断、提前关门清除报警信电梯外人的上升请求信号,电梯外人的下降请求信号, 电梯外人上升请求信号显示电梯外人下降请求信号显示到达楼层信号 设计思路:输入有clk时钟信号(频率为2Hz) full,deng,quick,clr超载、关门中断、提前关门清除报警c_u1,c_u2,c_u3,c_u4,c_u5电梯外人的上升请求c_d2,c_d3,c_d4,c_d5,c_d6 电梯外人的下降请求 d1,d2,d3,d4,d5,d6电梯内人的...

QQ_778132974的博客 1708

【Unity实战篇】| 游戏轮播图效果,多种实现思路及完整教程

在众多游戏的主界面、商城、图鉴或关卡选择界面中,我们常常能看到轮播图的身影。 它以动态、直观的方式展示游戏角色、皮肤、成就或场景,不仅极大地提升了界面的美观度和交互性,还能高效地引导玩家聚焦于核心内容。 本篇文章将从零开始,一步步在Unity中构建一个功能完备、性能优良的游戏轮播图。 使用UGUI系统,通过代码驱动,实现包括自动轮播、手动拖拽、分页指示器、无限循环等核心功能。 无论是UI新手还是希望优化现有方案的开发者,这篇文章都将为你提供清晰的思路和完整的解决方案。

努力前行,总会成为自己心中的那道光 4万+

原型模式 Prototype Pattern

一、模式介绍 1.1、定义 用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种模式创建对象非常高效,根本无须知道对象创建的细节。 1.2、优点 Java 自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一个对象更加优良 可以使用深克隆模式保存对象的状态,使用原型模式将对象复制一份,并将其状态保存起来,简化了创建对象的过程,以便在需要的时候使用,可辅助实现撤销操作 1.3、缺点 需要为每一个类都配置一个 cl

木易 313

GEE:计算非水体概率影像(水体淹没次数)

本文记录了在GEE平台上使用哨兵数据计算沿海地区非水体概率图像的计算方法和代码。基于像素,概率范围0-100。首先使用哨兵数据(s2)和大津算法(OTSU)计算的水体指数阈值来提取水体,然后计算研究区非水体像素在时间段内出现的概率。

养乐多的博客 2140

Java GoF 23种设计模式-创建型模式-原型模式(Prototype Pattern)

文章目录一、模式定义二、模式动机三、模式结构四、代码实现五、优缺点5.1 原型模式优点5.2 原型模式缺点 一、模式定义 原型模式(Prototype Pattern)是一种创建型设计模式,使你能够复制已有对象, 而又无需使代码依赖它们所属的类。原型模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用原型模式。 二、模式动机 在我们应用程序可能有某些对象的结构比较复杂,但是我们又需要频繁的使用它们,如果这个时候我们来不断的新建这个对象势必会大大损耗系统内存的,这个时候

WU4566285的博客 373

第 5 篇:责任链模式 (Chain of Responsibility) —— 协议栈的流水线

本文介绍了责任链模式在嵌入式通信协议解析中的应用。针对传统"面条式"代码维护困难的问题,提出将各协议解析器解耦为独立处理单元,通过链表形式串联。文章详细展示了模式实现:定义抽象处理者接口、实现具体协议处理器、构建链表管理器。该方案具有内存占用低(O(1)栈空间)、可动态扩展、支持优先级调整等优势,并探讨了性能优化策略及动态插件系统等扩展应用,为嵌入式通信协议处理提供了清晰的架构方案。

一路往蓝-Anbo 的博客 177

Xinference新手指南(一个命令直接安装成功)

对于新手,必须得学会使用docker部署,这是基本功!这里就不过多去介绍了,如果评论要出教程的话,以后再出了。

Ven%的博客 818

GOF23设计模式-创建型模式4-原型模式

设计模式GOF23-原型模式思考原型模式原型模式实现克隆绵羊多利(浅拷贝)克隆绵羊多利(深拷贝)利用序列化和反序列化技术实现深克隆何时使用?测试new与clone创建对象效率 思考 克隆技术是怎么样一个过程? JavaScript语言中,继承怎么实现? 原型模式 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。 java中的克隆技术,就是以某个对象为原型,复制出新的对...

Tumbler 432

三极管电平转换电路

摘要:本文介绍了三种基于三极管的电平转换电路方案。第一种采用双NPN三极管实现3.3V转5V反相电平转换;第二种使用单NPN三极管完成5V转3.3V同相转换;第三种利用单PNP三极管实现3.3V转5V同相转换。各方案均通过三极管的开关特性配合电阻网络实现电压域适配,具有结构简单、成本低的优点,适用于不同逻辑电平设备(如MCU与外设)间的信号兼容传输。文中详细分析了各电路的工作原理、元件作用和特性,并通过Multisim仿真验证了其功能有效性。

XU157303764的博客 1855

GOF23设计模式(创建型模式) 原型模式

一:原型模式的定义 二:关于深克隆和深克隆的区别 三:反序列化的方式实现深克隆 原型模式: 通过new产生一个对象需要非常繁琐的数据准备或访冋权限,则可以使用原型模式。 就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具备原型对象的特点 优势有:效率高(直接克隆,避免了重新执行构造过程步骤). 克隆类似于new,但是不同于new。new创建新的对象属性采用的是默认值。克隆出的对象的属性值完全和原型对象相同。并且克隆出的新对象改变不会影晌原型对象。然后,再修改克隆对..

欢迎来到 Baret-H 的博客 1074

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

GoF23设计模式-创建型设计模式:原型模式

一、为什么会有原型模式(克隆模式)? 在系统中存在大量相同或相似的对象,这些对象如果使用传统的构造方式来创建,会比较复杂且耗时耗资源。使用原型模式生成对象就很高效 二、原型模式 package com.project.prototype; /** * 具体原型类 */ public class Realizetype implements Cloneable{ Realizetype(){ System.out.println("创建原型类"); } @Override pro

愧九专栏 146

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

设计模式(二十六)设计模式GOF23-汇总总结

• GOF23中设计模式一览表 创建型模式 结构型模式 行为型模式 简单工厂模式 抽象工厂模式 工厂方法模式 单例模式 建造者模式 原型模式 适配器模式 桥接模式 组合模式 装饰器模式 外观模式 享元模式 代理模式 责任链模式 解释器模式 模板方法模式 命令模式 迭代器模式 中介者模式 备忘录模式 观察者模式 状态模式 策略模式 访问者模式 • 创建

奥迪的博客 142

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

GOF23种设计模式在Java中的应用(part 1)

第二部分:GOF23种设计模式在Java中的应用(part 2) 一、GOF来源及简介 1.1 GOF23种设计模式简介 《Design Patterns: Elements of Reusable Object-Oriented Software》(即后述《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides...

小蜜蜂1010的博客 1273

23种设计模式(GOF)

23种设计模式(GOF)

gb4215287的博客 2036

厚积薄发打卡Day32 :[kuangStudy] GoF23通俗易懂的设计模式之 <原型模式>

前言: 视频教程:狂神说Java之通俗易懂的23种设计模式 什么是设计模式? 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。 它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的 解决方案==> 一种思维,一种态度,一种进步 1995年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软 件的基础》一书,共收录了23种设计模式,从此树立了软件设计模式领域的里程碑,人称 【GoF

COOLGWAYNE_TECH_BLOG 277

GOF23种设计模式系列之创建型设计模式

GOF23种设计模式系列之创建型设计模式 目录GOF23种设计模式系列之创建型设计模式什么是创建型设计模式一.单例模式/原型模式 (Singleton)单例方式一:懒汉试双if锁单例方式二:饿汉式静态构造函数单例模式三:饿汉式静态字段调用方式如果正确使用单例模式呢? 什么是创建型设计模式 创建型设计模式的核心套路,就是管理对象创建,没有一定之规,按需取用就好 创建型设计模式有以下几种: 单例模式/原型模式 (Singleton) 简单工厂 工厂方法(Factory Method) 抽象工厂

我要的光荣哪怕只有一秒 304

GoF 的 23 种设计模式的分类和功能

1. 根据目的来分 根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式3 种。 创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合...

weixin_30621919的博客 100

使用Go实现GoF的23种设计模式(一)

前言 从1995年GoF提出23种设计模式到现在,25年过去了,设计模式依旧是软件领域的热门话题。在当下,如果你不会一点设计模式,都不好意思说自己是一个合格的程序员。设计模式通常被定义为: 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。 从定义上看,设计模式其实是一种经验的总结,是针对特定问题的简洁而优雅的解决方案。既然是经验总结,那么学习设计模式最直接的好处就在于可以站

ruanrunxue的博客 1617

设计模式(五)创建型:原型模式详解

原型模式(Prototype Pattern)是 GoF 23 种设计模式中的创建型模式之一,其核心价值在于通过复制现有对象来创建新对象,而不是通过 new 关键字调用构造函数。

谦与谦寻的神隐 1003

java_234_GOF23设计模式_原型模式_反序列化实现深复制_效率对比_创建型模式总结_练习2

//----------------------效率测试------------------------- //----------------------------------------------------------- package java_234_GOF23设计模式_原型模式_反序列化实现深复制_效率对比_创建型模式总结_练习; /** 效率对比: 普通new方式创建对象和克隆clone方式创建对象的效率差异 如果需要短时间创建大量对象,并且new的过程比较耗时,则可以考虑使用原型

weixin_45339692的博客 136
上一篇: GoF23种设计模式之创建型模式之工厂方法模式
下一篇: GoF23种设计模式之创建型模式之抽象工厂模式
innovation
博客等级 码龄14年 251粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值