java 设计模式 优缺点_java设计模式2:原型模式(机制\优缺点分析\使用场景)...

1、 原型模式实现机制

原型模式在设计模式中相对比较简单,它直接通过实现 Cloneable接口,再重写 clone()方法返回想要的对象就OK 了。

一起来看下代码 :

public class ProtoType implements Cloneable {

public ProtoType(){

System.out.println("new ");

}

/**

* 重写clone

* @return

* @throws CloneNotSupportedException

*/

@Override

protected Object clone() throws CloneNotSupportedException {

System.out.println("clone");

return (ProtoType)super.clone();

}

//测试 : 依次打印 new clone

public static void main(String[] args) throws CloneNotSupportedException {

//通过new 方式

ProtoType protoType = new ProtoType();

//通过clone方式,注意不走构造函数

ProtoType protoType2 =(ProtoType) protoType.clone();

// false 两个对象是不同引用

System.out.println(protoType ==protoType2);

}

}

可以看到,我们需要多少对象,直接调用clone()克隆即可。

2、优缺点分析

优点: 它是在运行时操作对象,操作的是内存中的二进制流,在创建大对象时,相比 new 一个对象,性能优势明显。

缺点:必须实现Cloneable接口

3、使用场景

希望以一个对象为原型,创建其他近似的对象的时候;

代码优化场景, 业务中用的比较少,一般很少单独使用,会结合工厂方法模式使用;

多个调用者使用时,并且需要修改对象中的值,可以考虑原型模式来提供对象;

ok,很简单吧🤙🤙🤙

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人机融合的难点

来源:人机与认知实验室【一个深度态势感知者的周围充满了各种各样的暗示和提醒。】“我小时候读过很多科幻小说。其中一个最常见的主题是“人与机器”,它经常以机器人的形式变得自我意识和威胁人类。这一主题也成为了《终结者》和《黑客帝国》等好莱坞电…

asp.net core权限模块的快速构建

大部分系统都会有权限模块,别人家系统的权限怎么生成的我不知道,我只知道这样做是可以并且挺好的。 文章中只对asp.net core的部分代码进行说明 呃 记录~,mvc版本自行前往仓库查阅 代码中的一些特性标记后面列出,或前往仓库查看~ 1.根据特性标…

深度长文:AMD的崛起、衰落与复兴

来源:内容编译自「techspot」,谢谢。AMD是最早的大型微处理器设计者之一,近50年来一直是技术爱好者之间争论的话题。它的历史构成了一个激动人心的故事——充满了英雄式的成功,愚蠢的错误。在其他半导体公司来来往往的时候&#x…

数据结构-使用两个栈实现一个队列

1:如何只使用stack实现queue呢?我们知道stack是先进后出的(FIFO),而queue是先进先出的(FIFO)。也就是说,stack进行了一次反向。如果进行两次反向,就能实现queue的功能&am…

5G时代下,边缘计算产品的未来展望

来源:北京物联网智能技术应用协会首发于人人都是产品经理。一、边缘计算市场潜力1. 5G基建如火如荼,万物互联互融将成为新战场2019年6月6号上午工信部宣布正式为中国移动、中国联通、中国电信、中国广电四家企业颁发5G牌照,中国正式进入5G元年…

使用Xcode进行iOS设备无线调试

设备环境:Mac OSX 10.12.5、iOS11、Xcode9PS:这是WWDC2017的新功能,iOS11以上,Xcode9这是刚性要求。这个功能不好找,就记下来了 手机连接上Xcode,打开Xcode菜单:Windows->Device and Simulators。找到连…

java 请求url 返回数据_java后台发起get请求获取响应数据|chu

本文实例为大家分享了java后台发起get请求获取响应数据,供大家参考,具体内容如下学习记录:话不多说直接上代码:package com.jl.chromeTest; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.H…

Android Studio 设置字体

File->Settings->Editor->Colors & Fonts->Font->Editor Font 转载于:https://www.cnblogs.com/WJQ2017/p/7608370.html

这三个博弈论新趋势,正深刻影响深度强化学习

来源 | AI科技评论作者 | Jesus Rodriguez编译 | 亚尔曼•佩皮校对 | 丛末 & Camel博弈论在现代人工智能(AI)解决方案中正扮演着至关重要的角色,深度强化学习(DRL)正是积极拥抱博弈论的头等公民。从单智能体程序到…

Beam概念学习系列之Pipeline 数据处理流水线

不多说,直接上干货! Pipeline 数据处理流水线 Pipeline将Source PCollection ParDo、Sink组织在一起形成了一个完整的数据处理的过程。 Beam概念学习系列之PCollection数据集 Beam概念学习系列之PTransform数据处理转载于:https://www.cnblogs.com/zlslc…

美国再出半导体新法案!1800亿谋求芯片制造振兴

文章来源:EE Times、James E.Risch芯东西(ID:aichip001)编 | 董温淑芯东西7月1日消息,上周,多位美国两党议员共同提出《2020美国晶圆代工法案(AFA,The American Foundries Act Of 20…

stackexchange.mysql_.net core使用redis基于StackExchange.Redis

.net core使用redis基于StackExchange.Redis教程,具体如下一.添加引用包StackExchange.RedisMicrosoft.Extensions.Configuration二.修改配置文件 appsettings.json{"RedisConfig": {"Redis_Default": {"Connection": "127.0.0.…

Apache网站服务

Apache 下载地址: http://mirror.bit.edu.cn/apache/httpd/相关软件下载地址:http://mirror.bjtu.edu.cn/apache/apr/apr          http://mirror.bjtu.edu.cn/apache/apr/apr-utilApache 简介: 进程技术,高资源消耗&…

微积分的发展史

来源:数学中国早期萌芽时期:1、 古西方萌芽时期:公元前七世纪,泰勒斯对图形的面积、体积与的长度的研究就含有早期微积分的思想,尽管不是很明显。公元前三世纪,伟大的全能科学家阿基米德利用穷竭法推算出了…

c# mysql代码中写事务_代码中添加事务控制 VS(数据库存储过程+事务) 保证数据的完整性与一致性...

[c#]代码库代码中使用事务前提:务必保证一个功能(或用例)在同一个打开的数据连接上,放到同一个事务里面操作。首先是在D层添加一个类为了保存当前操作的这一个连接放到一个事务中执行,并事务执行打开同一个连接、事务完成关闭同一个连接的一个…

AI的“色差”与“纠偏”

来源:脑极体在美国学术界声援BLM(Black Lives Matter)之后,事情的走向有点难以预料。学术界的反种族歧视反省似乎没有了下文,但是如火如荼的BLM运动早已蔓延开来,这次将矛头指向了AI界。事情的起因是杜克大…

英伟达奔驰共同发布自动驾驶系统,还自带停车功能

大数据文摘出品来源:VB编译:白浩然最近,英伟达(Nvidia)宣布为了和奔驰(Mercedes-Benz)汽车紧密合作,计划从2024年开始推出一款车载计算系统和AI基础设施,该技术于去年1月…

【hihocoder 1312】搜索三·启发式搜索(启发式搜索写法)

【题目链接】:http://hihocoder.com/problemset/problem/1312?sid1092363 【题意】 【题解】 定义一个A*函数 f stepval 这里的val是当前这个状态;每个点到目标状态的点的曼哈顿距离的绝对值; (这个值肯定比真正需要花费的路程短) step就为当前状态花费的步数; 把普通…

Gartner发布2020年数据与分析领域的十大技术趋势

来源:Gartner公司近日,Gartner发布了数据与分析领域的十大技术趋势,为数据和分析领导者的新冠疫情(COVID-19)响应和恢复工作提供指导,并为疫情后的重启做好准备。数据和分析领导者如果希望在疫情后能持续创…

java 中文域名转码_转换java方法

java date String 类型相互转换这种转换要用到java.text.SimpleDateFormat类字符串转换成日期类型:方法1:也是最简单的方法 Date datenew Date("2008-04-14");方法2:SimpleDateFormat sdfnew SimpleDateFormat("yyyy-M...文章…