设计模式之原型模式
来源:互联网 发布:朋友圈推广软件 编辑:程序博客网 时间:2024/06/15 20:12
描述:原型模式说白了就是拷贝一个已知对象,核心方法是实现了Cloneable接口的clone()方法,分为浅拷贝和深拷贝,两者区别在于浅拷贝只是复制了对象,而内部数据是共享的,而深拷贝是数据不共享;
UML类图如下:
测试代码如下:
1、实现Cloneable接口对象
package com.java.prototype;import java.util.ArrayList;public class PrototypeClass implements Cloneable {private ArrayList<String> list = new ArrayList<String>();@SuppressWarnings("unchecked")@Overrideprotected Object clone() throws CloneNotSupportedException {PrototypeClass instance = (PrototypeClass)super.clone();//instance.list.clone();instance.list = (ArrayList<String>)this.list.clone(); //不加这句是浅拷贝return instance;}public ArrayList<String> getList() {return list;}public void setList(ArrayList<String> list) {this.list = list;}@Overridepublic String toString() {return "这是原型模式...";}}
2、测试类(浅拷贝和深拷贝)package com.java.prototype;import java.util.List;public class PrototypeTest {public static void main(String[] args) {PrototypeClass cloneObj;//对Prototype进行复制PrototypeClass prototype = new PrototypeClass();prototype.getList().add("张三");try {cloneObj = (PrototypeClass)prototype.clone();cloneObj.getList().add("李四");List<String> list = prototype.getList();System.out.println(prototype.toString());for(String str : list){System.out.println(str);}} catch (CloneNotSupportedException e) {e.printStackTrace();}}}
3、测试结果:浅拷贝
这是原型模式...张三李四
深拷贝
这是原型模式...张三
0 0
- 设计模式之原型
- 设计模式之原型
- 设计模式 之 原型
- 设计模式之原型
- 设计模式之原型
- 设计模式之原型模式
- 设计模式之原型模式
- 设计模式之-原型模式
- 设计模式之 原型模式
- 设计模式之原型模式
- 设计模式之原型模式
- 设计模式之原型模式
- 设计模式之原型模式
- 设计模式之原型模式
- 设计模式之--原型模式
- 设计模式之原型模式
- 设计模式之原型模式
- 设计模式之原型模式
- Notice: Use of undefined constant id
- 学习【设计模式】从简单开始----------------单例模式
- JS 俄罗斯方块(不完美)
- 勒索(比特币)病毒的预防
- 详解OS X和iOS图像处理框架Core Image
- 设计模式之原型模式
- 古北水镇上空的夜景,怎少的了S8的“夜视仪”?
- 二分贪心10
- FZU2214 Knapsack problem--01背包
- C#中关于文件的
- Ubuntu14.04(64bit)下编译openjdk-7-jdk
- MD5Util
- leaked ServiceConnection com.baidu.location.LocationClient$1@426122f0
- BeanUtils拷贝属性容易忽视的坑