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

本文共 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

你可能感兴趣的文章
iOS UIWebView中图片显示尺寸不正常或者需要调整
查看>>
java多线程1-生产者与消费者
查看>>
C# 字符串处理函數大全
查看>>
老师上课总是不给PPT?于是我用几行python代码偷偷复制U盘文件
查看>>
HDU 1022 ( Train Problem I )
查看>>
node.js&pm2搭建node生产环境
查看>>
tornado write render redirect IP
查看>>
WebGL笔记(目录)
查看>>
JavaScript中的单体模式四种实现方式
查看>>
帮程序员减压放松的10个良心网站
查看>>
工作压力山大?码农这么减压最有效
查看>>
python学习手册笔记——13.while和for循环
查看>>
4 pandas模块,Series类
查看>>
sql server 的datediff函数
查看>>
mongoDB创建windows服务启动解决
查看>>
差点被处分
查看>>
mysql局域网连接
查看>>
分布式配置中心(Native - Config)
查看>>
WPF尖角框的绘制
查看>>
操作系统与计算机的演变
查看>>