设计模式练习(5)——原型模式

设计模式练习(5)——原型模式
原型模式
⼀、题⽬:
某数据处理软件需要增加⼀个图表复制功能。在图表对象(DataChart)中包含⼀个数据集对象(DataSet)。数据集对象⽤于封装要显⽰的数据,⽤户可以通过界⾯上的复制按钮将该图表复制⼀份,复制后,即可得到新的图表对象,然后可以修改新图表的编号、颜⾊、数据。试⽤原型模式设计软件实现深克隆。
(1)给出原型模式等结构视图
(2)给出该实例等类图及代码实现
⼆、所⽤模式结构视图:
三、实例类图:
分数阶傅立叶变换
四、实例实现代码:
(因为区分,所以在类的前⾯加了Gj19)
图表对象Gj19DataChart:
package Prototype;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OptionalDataException;门萨邦苏
import java.io.Serializable;
/**
* 图表对象
* @author gong
*
*/
public class Gj19DataChart implements Serializable{
/**
*
*/
private static final long serialVersionUID = 3672368913840301016L;
private DataSet ds = new DataSet();
public int number;  //编号
public String color;  //颜⾊
public int data;  //数据
public int getNumber() {
return number;
}
public void setNumber(int number) {
血淋巴
this.number = number;
}
public String getColor() {
return color;
}
public void setColor(String color) {
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
public DataSet getDs() {
return ds;
}
public void setDs(DataSet ds) {
this.ds = ds;
}
@Override
public String toString() {
return"Gj19DataChart [number=" + number + ", color=" + color
+ ", data=" + data + "]";
}
//使⽤序列化技术实现深克隆
public Gj19DataChart deepClone() throws  IOException, ClassNotFoundException, OptionalDataException    {
//将对象写⼊流中
ByteArrayOutputStream bao=new  ByteArrayOutputStream();
ObjectOutputStream oos=new  ObjectOutputStream(bao);
oos.writeObject(this);
oos.writeObject(this);
//将对象从流中取出
ByteArrayInputStream bis=new  ByteArray());
ObjectInputStream ois=new  ObjectInputStream(bis);
大叶黄杨白粉病return  (adObject();
}
}
DateSet数据流对象:
package Prototype;
import java.io.Serializable;
/**
* DateSet数据流对象
* @author gong
*
*/
public class DataSet implements Serializable{
/**
*
*/
private static final long serialVersionUID = -4833027480140156492L;
public int number;  //编号
public String color;  //颜⾊
public int data;  //数据
public int getNumber() {
冲绳海槽return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getColor() {
return color;
}
public void setColor(String color) {
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
}
客户端测试原型模式:sci收录
package Prototype;
//测试原型模式
public class Client {
public static void main(String args[])
{
Gj19DataChart  datachart1, datachart2 = null;
datachart1  = new Gj19DataChart(); //创建原型对象
try
{
datachart2 =  datachart1.deepClone(); //调⽤深克隆⽅法创建克隆对象
}
catch(Exception e){
System.out.println("克隆失败!");
}
System.out.println(datachart1==datachart2);
System.out.Ds()==Ds());
System.out.Color()==Color());
}
}
五、运⾏结果:

本文发布于:2024-09-22 22:36:53,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/131688.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   原型   图表   模式
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议