博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原型模式
阅读量:5078 次
发布时间:2019-06-12

本文共 2211 字,大约阅读时间需要 7 分钟。

原型模式定义

  原型模式就是根据一个原型对象来指明所有创建的对象的类型,然后根据这个原型对象复制出更多同类型的对象,这就是原型模式。

我们为什么要使用原型模式

示例

1 class Resume 2 { 3     private String name; 4     private String age; 5     private String company; 6      7     public Resume(String name,String age,String company) 8     { 9         this.name = name;10         this.age = age;11         this.company = company;12     }13     public void selfProduce()14     {15         System.out.println("我叫"+name+",年龄"+age+",曾经就职于"+company);16     }17 }18 19 public class Test20 {21     public static void main(String[] args)22     {23         Resume resume = new Resume("Tom", "23", "BAT");24         resume.selfProduce();25         Resume resume2 = new Resume("Tom", "23", "BAT");26         resume.selfProduce();27         Resume resume3 = new Resume("Tom", "23", "BAT");28         resume.selfProduce();29     }    30

如果我们现在要三份简历,我们就要创建三个对象;但是如果我们现在需要三十份简历,我们就要创建三十个对象,你觉得合适吗?现在理解为什么使用原型模式了吗?因为它可以根据一个对象复制出 n 个同类对象。

注意

  原型模式要求被克隆的对象实现一个接口(Cloneable 接口),然后就可以通过这个被克隆的对象复制出一个新的对象。这样一来,无须再通过new去创建。

示例代码

1 class Resume implements Cloneable // 对象能够被克隆的前提是:被克隆的对象必须实现 Cloneable 接口,抽象类实现了该接口,子类对象也会跟着实现该接口 2 { 3     private String name; 4     private String age; 5     private String company; 6      7     public Resume(String name,String age,String company) 8     { 9         this.name = name;10         this.age = age;11         this.company = company;12     }13     public void selfProduce()14     {15         System.out.println("我叫"+name+",年龄"+age+",曾经就职于"+company);16     }17     18     public Resume clone()19     {20         Resume cloneObject = null;21         try22         {23             cloneObject = (Resume) super.clone(); // 按照惯例,返回的对象应该通过调用 super.clone 获得24             25         } catch (CloneNotSupportedException e)26         {27             e.printStackTrace();28         }29         return cloneObject;30         31     }32 }

客户端

1 public class Clone 2 { 3     @Test 4     public void test() 5     { 6         Resume resume = new Resume("Tom", 23, "男"); 7         Resume cloneResume = resume.clone(); // 这就是根据原对象克隆出来的新对象 8         cloneResume.selfProduce(); 9     }10 }

总结

  以上就是原型模式;关于 Object 类的 clone() 方法,在下篇博客中将会有详细介绍。

 

转载于:https://www.cnblogs.com/tkzL/p/8745800.html

你可能感兴趣的文章
JSP作业3-金字塔
查看>>
Generate BKS File( Bouncy Castle KeyStore)
查看>>
obdg反汇编破解crackme
查看>>
Python作业1 登录程序
查看>>
js弹出模态与非模态页面
查看>>
第四讲 深入介绍信号与槽
查看>>
MARS安卓笔记
查看>>
centos安装——usb安装技术问题整理
查看>>
C#二维码与条形码的生成
查看>>
【leetcode】Container With Most Water
查看>>
如何熟悉一个项目?
查看>>
用户类热门排行榜特效
查看>>
Java基础学习,一些零散的笔记之Java的包
查看>>
Android工作学习第5天之TabHost实现菜单栏底部显示
查看>>
[WPF系列]-基础系列 Property Trigger, DataTrigger & EventTrigger
查看>>
java基础
查看>>
MS-MPI 的使用
查看>>
第18章 大浏览量系统的静态化结构设计
查看>>
关于雅虎中国关闭邮箱服务
查看>>
关于对称加密和解密
查看>>