Android架构进阶(五)—— 原型模式

Android源码设计模式探索与实战【原型模式】 理解: 原型模式是创新型设计模式的一种。我们先从字面理解一下,“原型”这个词,一般是相对存在的,说明存在它的复制体或者克隆体存在。那么这时有了一个问题,为什么要去克隆一个对象呢?既然有原型存在,那说明这个对象是可以通过new创建的,为什么我还要去复制呢?这也就是原型模式存在的真正意义了。往往我们需要复制的对象,它的创建过程复杂 or 创建耗时,所以这时直接去复制,肯定是性能最好的一种方式。定义: 原型模式用于创建重复的对象,通过拷贝这些原型创建新的对象。角色:Client: 客户端用户Prototype: 阅读详情

原型模式

原型模式:使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象

说白了,原型模式核心便是Ctrl+C 、Ctrl + V。也就是克隆(clone)。

使用场景

  • 创建一个对象,这个对象过于复杂,可以使用原型模式来进行复制一个对象。
  • 需要提供数据对象,同时有需要避免外部对数据对象进行修改。
  • 系统要保存对象状态的,而对象的状态改变很小

原型模式的角色

  • Client: 使用者。
  • Prototype: 接口(或抽象类),声明具备clone能力。
  • ConcretePrototype: 具体的原型类。

深拷贝和浅拷贝

  • 我们以ArrayList()为例
	ArrayList<String> a = new ArrayList();
	ArrayList<String> b = a;

浅拷贝,就是一个对象通过赋值的方式直接传递对象在内存中的内存地址。

	ArrayList<String> a = new ArrayList();
	ArrayList<String> b = a.clone();
	//或者
	ArrayList<String> c = new ArrayList(a);

深拷贝,使用clone方法,关于ArrayList的clone方法:

public Object clone() {
    try {
        ArrayList<?> v = (ArrayList<?>) super.clone();
        v.elementData = Arrays.copyOf(elementData, size);
        v.modCount = 0;
        return v;
    } catch (CloneNotSupportedException e) {
        // this shouldn't happen, since we are Cloneable
        throw new InternalError(e);
    }
}

原型模式优缺点

优点1、当创建的对象实例较为复杂的时候,使用原型模式可以简化对象的创建过程2、扩展性好,由于写原型模式的时候使用了抽象原型类,在客户端进行编程的时候可以将具体的原型类通过配置进行读取。3、可以使用深度克隆来保存对象的状态,使用原型模式进行复制。
缺点1、需要为每一个类配备一个克隆方法,而且该克隆方法位于一个类的里面,当对已有的类经行改造时需要修改源代码,违背了开闭原则。2、在实现深克隆的时需要编写较为复杂的代码,而且当对象之间存在多重嵌套引用的时候,为了实现深克隆,每一层对象对应的类都必须支持深克隆,实现相对麻烦。

总结

原型模式的本质,就是克隆,可以在某些场景中提升构建对象的效率,也可以保护性拷贝,可以通过返回一个返回对象的形式,实现只读的限制。

python采集keep运动数据 我国2009年确立“全民健身日”;2012年,“广泛开展全民健身运动”写入十八大报告;到2014年上升为国家战略,全民健身的分量越来越重。推动全民健身和全民健康深度融合,通过全民健身实现全民健康。 全民健身运动在我国越来越普及,每天清晨和傍晚时分,城市的广场上、公园里,到处是运动健身的人们,跑步、打球、跳舞、游泳、打太极拳等运动项目十分丰富,人们在运动中获得越来越多的幸福感。 随之诞生出了很多运动app,例如keep,咪咕,微信等,大家可以通过app随时记录自己的运动数据,特别是对于很多的减肥人群来说,通过 阅读详情

相关推荐

记录一次PowerJob使用达梦数据库的配置

记录一次PowerJob使用达梦数据库的配置

早晨阳光一般暖的博客 2161

Android 中设计模式 ----原型模式

来源:http://blog.youkuaiyun.com/shift_wwx/article/details/79092043先来看个实例:public class Person{ private String name; private int age; private int grade; private int class; private string sch...

私房菜 758

基于航天宏图PIE-SAR软件的高分三号(GF-3)SAR影像的预处理

软件官网 航天宏图—国内领先的卫星运营与应用服务提供商(官网) 一、数据导入 数据导入-GF-3-根据模式选择 参数文件导入解压后GF-3数据的XML文件 通道自动填充 设置输出目录 确定 等待,加载图像、自动构建金字塔 二、复数数据转换 强度/幅度特征是SAR影像最主要的特征之一,基于SAR强度/幅度影像可以提取地物目标信息,因此需要将SAR复数数据转换为SAR强度/幅度数据。导入输入影像,设置参数类型,输出目录、命名、类型; 漫长的等待 三、多视 为提...

weixin_52127098的博客 9004

Android-设计模式-魔术复制术 : 原型模式

在设计模式的世界中,有一种神奇的能力,它可以让你通过简单的复制,创造出新的对象。就像魔术师在舞台上将物体瞬间复制到另一个位置一样,原型模式让我们在软件开发中能够快速创建新对象,避免重复的初始化过程。本文将为你详细介绍原型模式的原理、应用场景以及如何使用它来解决问题。如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

xiaokangss的博客 325

从零到千兆:KSZ9031 PHY芯片在Zynq PS端的驱动移植心路历程

本文详细记录了在Xilinx Zynq-7000平台(基于XC7Z020芯片)上,为KSZ9031千兆以太网PHY芯片移植LwIP协议栈驱动的完整过程。从硬件连接配置、Vivado工程设置到LwIP库的深度修改与调试,分享了解决PHY识别、自协商及性能优化等关键问题的实战经验,助力开发者实现稳定的千兆网络连接。

honey的博客 1117

时序分析-由D触发器结构来理解Tsu、Th

FPGA逻辑单元内的D触发器(D-FF)是一种在时钟的上升沿(或下降沿)将输入信号的变化传送至输出的边沿触发器。 数字电子技术基础-闫石(第五版)边沿D触发器内部结构见下图: 而FPGA原理与结构(日)一书中,内部结构较之上图多了俩反相器: 由传输门和俩个反相器组成一个循环电路(锁存器),再由前后两级锁存器按主从结构链接而成。这里的传输门起开关作用,随着CLK的状态变化切换开关。只看输出的话,前级锁存器的值会随着时钟输入的变化井然有序地传入后级锁存器。为了防止时钟信号变化时输入信号发生冒险,从而使稳定.

XY_Chang的博客 3975

Android设计模式详解之原型模式

原型模式是一个创建型设计模式。用原型实例指定创建对象的种类,并通过复制这些原型创建新的对象。类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源,通过原型复制避免这些消耗;通过new产生一个对象需要非常繁琐的数据准备或访问权限;一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式复制多个对象供调用者使用,即保护性拷贝。

故不积跬步无以至千里 775

Win11/Win10系统下,Proe5.0 M280终极版保姆级安装与激活指南(含SSQ补丁避坑)

本文提供Win11/Win10系统下Pro/E 5.0 M280终极版的详细安装与激活指南,涵盖环境配置、SSQ补丁应用及常见问题解决方案。通过系统调整、分步安装和性能优化,确保软件在现代操作系统上的稳定运行,特别适合机械设计用户参考。

weixin_30895059的博客 446

[Android设计模式之旅]———原型模式

前言 原型模式是一种比较简单的设计模式,听名字“原型”我们可以隐约猜到可能带有原型属性。其实原型模式是一个创建型模式。原型模式中应该有一个样板对象,有一个具备克隆能力抽象类或接口,具体原型类实现该接口,内部复制出一个对象。原型模式一般用在创建比较复杂或是耗时的实例,通过克隆可以使得程序运行更加高效。 定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 使用场景 原型模式我们前面...

紫雾凌寒 2493

从零开始:用ADS 2023手把手教你设计2.4GHz Wi-Fi LNA(基于ATF-54143,附模型文件)

本文详细介绍了如何使用ADS 2023软件设计2.4GHz Wi-Fi频段的低噪声放大器(LNA),基于ATF-54143晶体管。内容涵盖模型导入、直流工作点确定、稳定性优化、噪声匹配等关键步骤,并提供可下载的模型文件包,帮助工程师快速掌握LNA设计技巧。

weixin_42531128的博客 323

【云原生技术】SonarQube 生态中PMD插件和P3C插件详细介绍

4. 在项目中如何选择 / 组合 1. 小团队、对《阿里规约》认同度高 → 直接启用 **P3C**,配合 SonarJava 基本够用。 2. 追求全面 Bug/安全检测 + 额外编码规范 → **SonarJava + PMD**(必要时加 P3C 少量规则)。 3. 大型多团队,希望“一本规约”统一风格 → **P3C 为主**,再补充 SonarJava/PMD 的 Bug 与安全规则。 4. 通过 Quality Gate 控制:将 **Blocker/Critical** Bug

weixin_46453070的博客 1366

Android设计模式系列--原型模式,阿里P8Android架构师谈

*其实上面说了这么多,钱是永远赚不完的,在这个知识付费的时代,知识技能提升才是是根本!我作为一名8年的高级工程师,知识技能已经学习的差不多。**在看这篇文章的可能有刚刚入门,刚刚开始工作,或者大佬级人物。像刚刚开始学Android开发小白想要快速提升自己,最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以这里分享一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。这么重要的事情说三遍啦!直达领取链接:点击链接免费领取【

m0_60452134的博客 920

BPC坏点矫正

whatis the Bad Pixel? 坏点为死点,也就是基本不随照度变化呈现光电线性转换的关系。表现为暗态常亮,亮态常暗。 坏点分类:静态坏点:亮坏点,暗坏点。 动态坏点:在一定像素范围内,该点表现正常,而超过这一范围,该点表现的比周围像素要亮。与sensor ...

camerall 1万+

Android的设计模式-原型模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中:1.定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。2.介绍 原型模式属于创建型模式。 一个已存在的对象(即原型),通过复制原型的方式来创建一个内部属性跟原型都一样的新的对象,这就是原型模式。 原型模式的核心是clone方法,通过clone方法来实现对象的拷贝。 3.UML类图3.1 角色说明: Prototype(抽

四月葡萄的博客 576

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android设计模式系列--原型模式,最新整理

*其实上面说了这么多,钱是永远赚不完的,在这个知识付费的时代,知识技能提升才是是根本!我作为一名8年的高级工程师,知识技能已经学习的差不多。**在看这篇文章的可能有刚刚入门,刚刚开始工作,或者大佬级人物。像刚刚开始学Android开发小白想要快速提升自己,最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以这里分享一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。这么重要的事情说三遍啦!直达领取链接:点击链接免费领取【

芯_v_648374雨馨博客 891

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android 源码的原型模式

Android 源码的原型模式 原型模式介绍 原型模式是一个创建型的模式。原型二字表明了该模式应该有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程也就是我们俗称的“克隆”。被复制的实例就是我们所称的原型,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。 原型模式的定义 用原型实例指定创建对象的种类,...

okclouderx的博客 274

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android常用设计模式之原型模式

一.定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 当new一个对象需要非常繁琐的数据准备或访问权限时就可以使用原型模式,原型模式就是java中的clone技术,以某个对象为原型, 复制出新的对象,新的对象具有原型对象的特点。 因此原型模式的核心就是clone技术。 二.角色 1.抽象原型类(Prototype):抽象类或者接口,用来申明clone方法。...

认真做事,开心生活 1450

android之原型模式回顾

一、概念:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 是啥意思呢,具体还是看代码: 首先我们定义一个Person类 public class Person{ private String name; private int age; private double height; private double weight; pu...

lizhong 623

android中的原型模式,Android中的原型模式

设计模式.png定义原型的是一种创建型的设计模式,主用来创建的复杂的对象和构建耗时的实例。通过克隆已有的对象来创建的新的对象,从而节省时间和内存。通过克隆一个已经存在的实例可以使我们的程序运行的更高效。原型模式UML.jpg使用场景(1)类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗。(2)通过new产生的一个对象需要非常繁琐的数据准备或者权限,这时可以使用原...

weixin_29032489的博客 196

android架构师之路,Android 架构师之路9 设计模式之原型模式

前言原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数...

weixin_36054993的博客 237

Android设计模式系列--原型模式

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。(以下体系的复习资料是我从各路大佬收集整理好的)《Android开发七大模块核心知识笔记》《960全网最全Android开发笔记》《379页Android开发面试宝典》历时半年,我们整理了这份市面上最全面的安卓面试题解析大全包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。

2401_84132496的博客 728

设计模式(五):利用原型模式复制几个葫芦娃

前面的文章介绍了工厂模式和抽象工厂模式、建造者模式,它们都属于创建型设计模式,今天介绍另外一种创建性设计模式,原型模式(prototype pattern)。 什么时候用原型模式? 我个人一直有种观点,就是骨子里懒惰的程序员都喜欢用设计模式,因为懒所以得想尽办法让自己更高效。 原型模式就是一种懒操作,用于频繁创建对象的场所。 日常生活中,我们都说两个人很像,简直就是一个模子里引出来的。 那么,代码中原型模式就是这样基于一个对象快速复制另外一个对象,而无需重头全新创建。 比如,代码要产生 7 个葫芦娃,怎么用

frank 的专栏 1370

android中的原型模式,结合Android学设计模式--原型模式(Prototype)

一、什么是原型模式Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。二、原型模式的特点由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。根据对象克...

weixin_39794213的博客 234

Android设计模式之——原型模式

一、介绍原型模式是一个创建型的模式。原型二字表明了该模型应该有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程也就是我们俗称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型也是可定制的。原型模型多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。二、定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。三、使用场景

Davis 7148

Android设计模式--原型模式

1.定义 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 2.介绍 原型模式属于创建型模式。 一个已存在的对象(即原型),通过复制原型的方式来创建一个内部属性跟原型都一样的新的对象,这就是原型模式。 原型模式的核心是clone方法,通过clone方法来实现对象的拷贝。 3.UML类图 原型模式UML类图.jpg 3.1 角色说明: Prototype(抽象原型类):抽象类或者接口,用来声明clone方法。 ConcretePrototype1、ConcreteProto

zenmela2011的专栏 322

原型模式的使用场景

文章目录原型模式的使用场景源码使用场景-Intent案例demo 原型模式的使用场景 (1)类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗。 (2)通过new一个对象需要非常繁琐的数据准备或访问权限,可以使用原型模式。 (3)一个对象需要提供给其他对象访问,而且各个调用者可能需要修改其值,可以考虑使用原型模式拷贝多个对象供调用者使用,即保护性拷贝 **注:*...

d773689630的专栏 9654
上一篇: Android架构进阶(四)—— 单例模式
下一篇: Android架构进阶(六)—— 建造者模式
豪利丶王
博客等级 码龄11年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值