Gof设计模式之原型模式(三)

模式定义:

复制现有对象实例来创建一个新的实例

模式用途:

例如做发送邮件服务,发送给所有人的短信内容都是基本相同,只有收件人,收件地址不同,我们把所有的内容重新写一遍,将变得毫无意义,每一封邮件,我们只需要修改收件人跟收件地址即可,邮件内容我们前期定义好就不需要改变,在此就用到我们今天所说的原型模式。

模式原理:

在java中我们需要实现一个Cloneable接口,就可以实现实例的拷贝,Cloneable接口就是通知java虚拟机安全的使用实例拷贝,否则将报CloneNotSupport异常。我们所有的类都是继承Object,Object中有一个clone方法,该方法修饰符是protected,所以一般类不可以调用,所以原型类需要将clone方法修改为public,才可以。

模式代码:

该方法实现了Cloneable,并重写了clone方法

我们第一次调用赋值title为不变的数据

,第二次就不需要赋值即可,调用clone方法。第一次的title也会克隆过来

运行结果:

两次运行的title一致,而context是变化的,可以证明,第二次对象是被完全赋值过来的。

结语:创建型设计模式理解起来非常简单,希望大家可以快速跟上。还剩一个工厂和抽象工厂,创建型设计模式完结,接下更新七个设计原则。

原文发布于微信公众号 - 精讲JAVA(toooooooozi)

原文发表时间:2017-10-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏有趣的django

1.python简介

简介 1、python语言介绍 python的创始人:Guido Van Rossum 2、python是一门什么样的语言 编程语言主要从以下几个角度进行分类:...

42350
来自专栏FreeBuf

VLC播放器加载恶意字幕文件导致执行任意代码漏洞分析与POC实现

今年5月23号的时候,听说checkpoint搞了个大新闻:vlc等播放器加载特定字幕可以完全控制用户电脑。当时我就震惊了:还有何种操作。想想看,当你吃着辣条,...

43640
来自专栏程序员的知识天地

Python牛B操作:一行代码减少一半内存占用

在项目制作中,我们必须要存储和处理一个相当大的动态列表。测试人员在测试过程中,抱怨内存不足。下面介绍一个简单的方法,通过添加一行代码来解决这个问题。

17020
来自专栏Kevin-ZhangCG

Java开发岗面试知识点解析

394110
来自专栏北京马哥教育

Python入门教程:超详细1小时学会Python

1.Hello world 安装完Python之后,打开IDLE(Python GUI) ,该程序是Python语言解释器,你写的语句能够立即运行。 我们写下...

47050
来自专栏Vamei实验室

Java基础07 包

我们已经写了一些Java程序。之前的每个Java程序都被保存为一个文件,比如Test.java。随后,该程序被编译为Test.class。我们最终使用$java...

215100
来自专栏程序你好

Java集合对象如何进行内存优化

13920
来自专栏牛客网

知识总结:设计模式总结(C++和Python实现)前言案例实现 创建型模式 结构型模式行为型模式对比总结

前言 GoF的23种设计模式,包括创建型、结构型和行为型,其涵盖了面向对象思想的精髓以及诸多细节。本文结合《设计模式》和《大话设计模式》,并用C++和Pytho...

64780
来自专栏拂晓风起

node.js模块化写法入门

16360
来自专栏程序员宝库

Java 异常处理的 9 个最佳实践

在 Java 中,异常处理是个很麻烦的事情。初学者觉得它很难理解,甚至是经验丰富的开发者也要花费很长时间决定异常是要处理掉和抛出。 所以很多开发团队约定一些原则...

35890

扫码关注云+社区

领取腾讯云代金券