创建型模式——原型模式

一、 实验目的与要求
1.练习使用单一模式。设计相关的模拟场景并进行实施,验证模式特性,掌握其优缺点。
2.实验结束后,对相关内容进行总结。
二、实验内容
1.模式应用场景说明
原型模式:在需要一个类的大量对象的时候,使用原型模式是最佳选择,因为原型模式是在内存中对这个对象进行拷贝,要比直接new这个对象性能要好很多,在这种情况下,需要的对象越多,原型模式体现出的优点越明显。
比如下面,将一个文件的内容复制到例外一个。
2.应用场景类图
在这里插入图片描述

3.实现代码与解释
3.1 Attachment

package 原型模式;public class Attachment {public void download(){System.out.println("下载文件");	}
}

3.2 CopyWord

package 原型模式;public class CopyWord {private Attachment Download=null;public CopyWord(){this.Download=new Attachment();}//将对象写入流中public Object clone(){CopyWord clone=null;try{clone=(CopyWord)super.clone();		}catch(CloneNotSupportedException e){System.out.println("Clone failure!");}return clone;}//将对象从流中取出public Attachment getAttachment(){return this.Download;}public void display(){System.out.println("查看邮件");	}
}

3.3—User

package 原型模式;public class User {public static void main(String a[]){CopyWord word,copyword;	//定义两个抽象对象word=new CopyWord();  //实例化copyword=(CopyWord)word.clone();//负责克隆System.out.println("word==copyword?");		//如果相同  System.out.println(word==copyword);System.out.println("word.getCopyword==copyword.getCopyword?"); //如果相同  System.out.println(word.getAttachment()==copyword.getAttachment());			}
}

4.结果及分析
在这里插入图片描述

三、实验总结
在使用原型模式的时候,如果一个对象的初始化需要很多其他对象的数据准备或其他资源的繁琐计算,那么可以使用原型模式。当需要一个对象的大量公共信息,少量字段进行个性化设置的时候,也可以使用原型模式拷贝出现有对象的副本进行加工处理。

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

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

相关文章

现在就是.Net最好的时代!我赞成,谁反对?

2020年.NET Core逆袭冲榜,多榜直接冠军!Build2020,发布多款产品赋能.NET开发者!截止5月,腾讯,阿里,特斯拉等大厂都在招聘.NET!这些征兆,都预示着.NET的春天即将到来&…

[JavaWeb-JavaScript]JavaScript_Array数组对象

Array:数组对象 1. 创建:1. var arr new Array(元素列表);2. var arr new Array(默认长度);3. var arr [元素列表];2. 方法join(参数):将数组中的元素按照指定的分隔符拼接为字符串push() 向数组的末尾添加一个或更多元素,并返回新的长度。3. 属性len…

如何给Blazor.Server加个API鉴权?

(Ant Design of Blazor为努力而生)书接上文,上次我们说到了最终选用Blazor.Server来实现了我们的MVP项目,额其实就是博客的增删改查,不过运行还是很爽的,不过是一个小demo,脑子里一直有个声音&a…

结构型模式——桥接模式

一、 实验目的与要求 1.练习使用桥接模式。设计相关的模拟场景并进行实施,验证模式特性,掌握其优缺点。 2.实验结束后,对相关内容进行总结。 二、实验内容 1.模式应用场景说明 相信大家都看过罗老师买奶茶的情节,现实生活中也是一…

[JavaWeb-Bootstrap]CSS样式和JS插件

CSS样式和JS插件 1. 全局CSS样式&#xff1a;* 按钮&#xff1a;class"btn btn-default"* 图片&#xff1a;* class"img-responsive"&#xff1a;图片在任意尺寸都占100%* 图片形状* <img src"..." alt"..." class"img-ro…

TypeScript+vue使用与迁移经验总结

源宝导读&#xff1a;ERP平台的前端底层使用了Vue作为组件的基础架构&#xff0c;而使用了TypeScript语言进行组件的封装与开发。本文将简要介绍平台在使用TypeScript和Vue框架进行老功能重构时的经验总结。一、背景下面主要探讨是以下三个方面&#xff1a;目前项目中使用到的v…

结构型模式——适配器模式

一、 实验目的与要求 1.练习使用适配器模式。设计相关的模拟场景并进行实施&#xff0c;验证模式特性&#xff0c;掌握其优缺点。 2.实验结束后&#xff0c;对相关内容进行总结。 二、实验内容 1.模式应用场景说明 现在喜欢上网的年轻人越来越多&#xff0c;而家里面的电脑满足…

[JS-BOM]BOM概念与组成

BOM: 1. 概念&#xff1a;Browser Object Model 浏览器对象模型* 将浏览器的各个组成部分封装成对象。2. 组成&#xff1a;* Window&#xff1a;窗口对象* Navigator&#xff1a;浏览器对象* Screen&#xff1a;显示器屏幕对象* History&#xff1a;历史记录对象* Location&am…

[号外] Blazor wasm 其实也挺快!

之前第一篇的时候&#xff0c;因为没有用任意配置&#xff0c;导致wasm加载很慢&#xff0c;我就感觉不会是这样的&#xff0c;为了不误导小盆友&#xff0c;所以还是趁着周末研究了一波&#xff0c;做了相关的调整&#xff0c;经过测试&#xff0c;速度基本可观了&#xff0c;…

单调栈思维 2021年度训练联盟热身训练赛第三场——K题 Summer Trip

题意&#xff1a; 给你一个字符串&#xff0c;问其子串中有多少个满足&#xff1a; 1.子串头尾字母不相同&#xff1b; 2.子串内部字母与头尾字母不相同&#xff1b; 3.子串长度大于等于2&#xff1b; 问有多少个这样的字串&#xff1f; 题目&#xff1a; Leo has started a…

WinUI 3 试玩报告

1. 什么是 WinUI 3#在微软 Build 2020 开发者大会上&#xff0c;WinUI 团队宣布可公开预览的 WinUI 3 Preview 1&#xff0c;它让开发人员可以在 Win32 中使用 WinUI。WinUI 3 Preview 1 包含新的 VisualStudio 项目模板&#xff0c;可以创建面向 .NET 5 的 C# 和 C/Win32 项目…

[JS-BOM]BOM_Window窗口对象

Window&#xff1a;窗口对象 1. 创建2. 方法1. 与弹出框有关的方法&#xff1a;alert() 显示带有一段消息和一个确认按钮的警告框。confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。* 如果用户点击确定按钮&#xff0c;则方法返回true* 如果用户点击取消按钮&#…

记一次EF Core连接MySql、Oracle

点击上方“Dotnet9”添加关注哦上上个月写的一篇文章&#xff0c;今天有同事问我使用EF Core连接MySql和Oracel的问题&#xff0c;我把这篇文章直接甩给了他。下面是正文&#xff1a;这几天研究了EF Core对MySql、Oracle的操作&#xff0c;包括连接、简单查询等&#xff0c;操作…

[JS-BOM]BOM_Location地址栏对象

Location&#xff1a;地址栏对象 1. 创建(获取)&#xff1a;1. window.location2. location2. 方法&#xff1a;* reload() 重新加载当前文档。刷新3. 属性* href 设置或返回完整的 URL。示例代码如下: <!DOCTYPE html> <html lang"en"> <head>&l…

基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(五)

系列文章使用 abp cli 搭建项目给项目瘦身&#xff0c;让它跑起来完善与美化&#xff0c;Swagger登场数据访问和代码优先自定义仓储之增删改查统一规范API&#xff0c;包装返回模型再说Swagger&#xff0c;分组、描述、小绿锁接入GitHub&#xff0c;用JWT保护你的API异常处理和…

Codeforces Round #719 (Div. 3)/ Codeforces Round #720 (Div. 2)

A. Do Not Be Distracted! 题意&#xff1a; 一件事情一但开始&#xff0c;只能做完才能做别的事&#xff0c;当出现一件事不连续出现时&#xff0c;教师会怀疑 题目&#xff1a; Polycarp has 26 tasks. Each task is designated by a capital letter of the Latin alphab…

[JS-BOM]BOM_History历史记录对象

History&#xff1a;历史记录对象 1. 创建(获取)&#xff1a;1. window.history2. history2. 方法&#xff1a;* back() 加载 history 列表中的前一个 URL。* forward() 加载 history 列表中的下一个 URL。* go(参数) 加载 history 列表中的某个具体页面。* 参数&#xff1a;* …

dotNET Core 3.X 使用 Autofac 来增强依赖注入

在上一篇《dotNET Core 3.X 依赖注入》中简单介绍了 dotNET Core 框架本身的依赖注入功能&#xff0c;大部分情况下使用框架的依赖注入功能就可以满足了&#xff0c;在一些特殊场景下&#xff0c;我们就需要引入第三方的注入框架。为什么要使用 Autofac&#xff1f;如果您在之前…

[JS-DOM]DOM概述

DOM&#xff1a; * 概念&#xff1a; Document Object Model 文档对象模型* 将标记语言文档的各个组成部分&#xff0c;封装为对象。可以使用这些对象&#xff0c;对标记语言文档进行CRUD的动态操作* W3C DOM 标准被分为 3 个不同的部分&#xff1a;* 核心 DOM - 针对任何结构…

基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(一)

系列文章使用 abp cli 搭建项目给项目瘦身&#xff0c;让它跑起来完善与美化&#xff0c;Swagger登场数据访问和代码优先自定义仓储之增删改查统一规范API&#xff0c;包装返回模型再说Swagger&#xff0c;分组、描述、小绿锁接入GitHub&#xff0c;用JWT保护你的API异常处理和…