原型模式--你会用么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原型模式--你会用么?相关的知识,希望对你有一定的参考价值。

参考技术A 是指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。(创建性模式)

原型模式的核心在于拷贝原型对象。以系统中已存在的一个对象为原型,直接基于 内存 二进制流进行拷贝,无需再经历耗时的对象初始化过程(不需要关注创建细节、构造函数),性能提升许多;当构建过程比较耗时时,可以利用已存在的对象作为原型,对其进行克隆。

1、类初始化消耗的资源相对较多。

2、new 产生的一个对象需要非常繁琐的过程(数据准备,访问权限等)。

3、构造函数比较复杂

4、循环体中生产大量的对象时。

在Spring中,原型模式应用得非常广泛。例如 scope = “prototype”,在我们经常用的JSON。parseObject()也是一种原型模式。

先创建原型IPrototype接口,如下图:

具体实现类,如下图

实际开发中,JDK已经帮我们实现了一个现成的API,我们只需要实现Cloneable接口即可。如下图:

这里增加两个概念:

浅克隆:

浅克隆就是把原对象m1的内存完全copy一份,在堆中开辟一个新的空间放置,里面的引用对象也只是复制了它的classpath,并不会对m1中的所有引用对象再重新开辟一个空间,这样就导致了这两个对象除了基本类型以外,其余类型的成员变量还是指向了同一块内存地址,那么当这个地址被改变的时候,m1,m2中的对应成员变量也会跟着改变(引用关系如下图):

深克隆:

深克隆刚好就是为了解决这个问题,它会把m1中的引用类型等的成员变量也copy一份出来,放到一个新的地址中,然后m2这些成员变量的classpath指向这个新copy出来的地址,这样被copy出来的对象也就完全独立开来了(引用关系如下图):

如果我们克隆的目标对象是单例对象,那意味着,深克隆就会破坏单例。实际上防止克隆破坏单例解决思路非常简单,禁止深克隆便可。

手机中的NFC功能,你会用么?附使用方法与技巧

参考技术A

在现在看来,各厂商旗舰手机的标配之中就有NFC功能的缩影,NFC功能的大大普及,给我们的生活来带极大的方便,摆脱了传统携带公交卡、银行卡的习惯,一个配置NFC功能的手机即可全部搞定。NFC功能为什么有这么大的魔力呢,首先我们先来看看NFC功能如何出现的,NFC全称Near Field Communication,定义为近距离无线通信,起初有成立泛欧联盟,开发NFC的开放式架构,并推动在手机中的应用。

NFC(简称近场通信)是一种短距高频的无线电技术,在13.56MHz频率运行于10厘米距离内。其传输速度有106 Kbit/秒、212 Kbit/秒或者424 Kbit/秒三种。目前近场通信已通过成为ISO/IEC IS 18092国际标准、ECMA-340标准与ETSI TS 102 190标准。NFC采用主动和被动两种读取模式。在现在看来,这项技术被广泛的应用,在手机上可以充当公交卡、门禁钥匙、移动支付、身份识别、传输数据等。

从其功能上不难看出,一块小小的NFC芯片,可以实现这么多功能,也是其便利的所在。今天笔者以小米手机 6作为当年的旗舰手机为例,介绍这个NFC功能的实用性和小技巧,希望能给读者带来方便。

使用NFC功能来进行传输文件用户几乎很少很少,不如蓝牙来得快,且在传输速度上蓝牙比NFC要快,理论是NFC传输速度在424Kbps,蓝牙在1Mbps;传输距离上,NFC传输距离是0-10cm,蓝牙是0-10m,NFC传输比较适用于一些敏感信息或个人数据的传输等,蓝牙比较适合长距离的文件传输等;在安全性上,NFC具备优势。笔者在测试NFC传输过程中必须两台手机紧贴在一起,不然会导致数传中断,从而引起重复操作等,再者如果没有手机支持NFC功能,相比还是蓝牙来得快。

操作方法:打开NFC功能—再打开“Android Beam”功能—两手机同时触碰即可显示传输文件的操作方法。

有了这个功能之后,大大节约的人们的出行效率,一个手机就能搞定,同时在不定期时间也会有开卡免费的活动。自带公交卡功能这还是其中的一个方面,如果余额不足怎么办?手机支持充值公交卡,很方便也很实用。不过需要注意的是,刷公交必须打开NFC功能哦,总体来看,手机公交卡,具有其便捷性性优点,但如果手机被盗,也是一个鸡肋。

操作方法:需要在手机上开通公交卡功能(最近开通岭南通的公交卡免开发费哦)才能享有此功能。

1.微信充值


打开手机NFC功能(微信中NFC功能也需开启),将公交卡紧贴手机,之后会弹出界面,选择“微信”,选择充值金额,然后支付,充值即可;当然你也可以直接在微信支付界面—生活缴费—公交卡充值进行操作。需要注意的是,在充值的过程中公交卡需要紧贴手机。不过目前来看,微信支持公交卡充值的城市有武汉(武汉通)、北京(北京一卡通)、广州(羊城通/岭南通)、深圳(深圳通)

2.手机QQ充值

手机QQ充值与微信的充值方式是差不多的,将公交卡紧贴手机,之后会弹出界面,选择“QQ”,选择充值金额,然后支付,充值即可。需要注意的是,在充值的过程中公交卡需要紧贴手机,以保证充值能成功。QQ充值的话,需要基于支持的手机,比如小米2A、小米3...我震惊了。。

3.岭南通APP

岭南通APP是由岭南通公司自主开发的一款APP,具有查询服务网点、记录查询、在线充值等功能,不仅可以对卡片进行NFC充值,卡片的余额、消费记录查询也更加便捷!有2种查询方式可供选择:NFC手机可以直接读卡,其他手机可输入卡号查询。是你的手快还是手机读卡速度更快?

4.支付宝充值

在手机上登录支付宝, 选择【城市一卡通】(也可以直接搜索),需要注意的是城市一卡通九宫格入口是安卓的用户都能看到,ios的不支持;然后使用公交卡紧贴于手机,进行读取和充值,如果付款完成之后,没有将卡贴在手机背面,页面会提示贴卡,在15秒内没有贴卡,则提示是否继续充值,按【取消】,充值金额会退回到用户支付宝账户,点【确定】会重新进入15秒到计时贴卡页面。需要注意的是,支付宝的公交卡充值适配不是很全,部分公交卡无法实现充值的,需要借助于其他方法。


当然你也可以进行银行手机端进行充值,在开启NFC之后,需要将公交卡贴于手机NFC处,会有窗口弹出,用户可以选择需要进行充值的应用。除此之外,我们还可以使用“完美校园”,“微信”等APP对饭卡、燃气卡等进行充值,充值不用再排长龙,卡片轻轻一贴,充值立马完成。



门禁卡是现在社区一种安全管理的方式之一,出去进来都是需要刷门禁卡的,出去忘记携带是一个麻烦事,尤其是走访亲戚朋友,门卫又不认识你,本来想给朋友一个惊喜的,变成朋友给你一个“惊喜”。那么NFC支持模拟门禁卡可谓是一个通行证了,外出你的手机肯定要随着你,如果手机忘带了,真没办法了。

1.录入实体卡

打开小米钱包,选择小米门卡,点击右下角的添加,然后选择门卡,再根据提示将门禁卡贴于感应区,后续根据提示完成即可,支持普通门卡、异形门禁卡,在换出公交卡的界面,是有门禁卡存在的,目前仅支持模拟市面上未经过加密且频率为13.56MHZ的门卡,需要注意的是部分门禁卡是有加密功能,是无法进行复制模拟的,这就需要采用第2种办法。

2.自定义空白卡

模拟门卡首个支持场景为自定义空白卡,用户选择后可向上直接发门卡到手机,该场景下用户开卡后需要到线下(小区物业、学校或其他线下场景)由工作人员写入数据开通权限即可使用手机刷卡开门。用户需要注意的是在线下开通门禁权限需要小区业主提供相关的证明,不然一般的物业不会给你这个权限的。

3.智能门锁卡

用户在小米手机中开通米家智能门锁后,即可使用手机刷卡开门,开通完成之后,需要用户打开米家APP,进入设备管理界面,激活门锁为米家NFC卡,分配钥匙后,即可使用手机刷卡开门。同时为了保证安全,刷卡时需要验证指纹。但现在只支持米家门锁,建议后期对第三方的门锁采取同样的支持。



第三方Mi Pay是小米钱包提供的手机支付功能,使用支持NFC的小米手机,通过带有银联“云闪付”标志的POS机即可支付交易。Mi Pay已支持中国银行、中国工商银行、等全国74家银行,实现了对主流银行的全覆盖,并仍在不断拓展。除支付外,Mi Pay还在不断拓展其使用场景,如ODA、线上有卡支付、碰一碰支付等功能都在一定程度上简化了支付流程,优化了使用体验。使用之前需要绑定支持云闪付的银行卡即可(银行卡上会有标识的,如Quick 闪付 Pass)。

总结:NFC功能已经在日常的生活中发挥着越来越重要的作用,比如有NFC模块的POS机进行便捷支付、具备闪付功能的ATM机能够支持无卡取款、共享单车支持NFC接触解锁等,具备NFC功能的手机越来越多,只有全面的认知和了解它,才能发挥它的巨大作用,不然你当它是摆设么?未来,相信厂家将持续对手机NFC做更多有益尝试和 探索 ,为用户带来便利。NFC还具备哪些使用方法和技巧么,欢迎讨论。

以上是关于原型模式--你会用么?的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之原型模式

数据库备份checksum选项你会用么?

这些工具你会用吗?常见设计工具视频教程集锦

白话讲解创建型设计模式:单例原型,构建

白话讲解创建型设计模式:单例原型,构建

手机中的NFC功能,你会用么?附使用方法与技巧