第一范文网 - 专业文章范例文档资料分享平台

郑州大学软件学院设计模式

来源:用户分享 时间:2025/5/26 0:37:12 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

NodeList nl = doc.getElementsByTagName

(\

Node

classNode=nl.item(0).getFirstChild(); String

cName=classNode.getNodeValue();

//通过类名生成实例对象并将其返回

Class

c=Class.forName(cName); Object obj=c.newInstance(); return obj; }

catch(Exception e) { e.printStackTrace(); return null; } } }

实例二:日志记录器

抽象工厂模式

实例一:电器工厂

一个电器工厂可以产生多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,TCL工厂可以生产TCL电视机、TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成了一个产品等级结构,现使用抽象工厂模式模拟该场景。 public interface EFactory { public Television produceTelevision(); public AirConditioner produceAirConditioner(); }

public class HaierFactory implements EFactory

{ public Television produceTelevision() { return new HaierTelevision(); } public AirConditioner produceAirConditioner() { return new HairAirConditioner(); } }

public class HaierTelevision implements Television { public void play() { System.out.println(\海尔电视机播放中......\ } }

public class HairAirConditioner implements AirConditioner { public void changeTemperature() { System.out.println(\海尔空调温度改变中......\ } }

public interface Television { public void play(); }

原型模式

实例一:邮件复制(浅克隆)

由于邮件对象包含的内容较多(如发送者、接收者、标题、内容、日期、附件等),某系统中现需要提供一个邮件复制功能,对于已经创建好的邮件对象,可以通过复制的方式创建一个新的邮件对象,如果需要改变某

部分内容,无须修改原始的邮件对象,只需要修改复制后得到的邮件对象即可。使用原型模式设计该系统。在本实例中使用浅克隆实现邮件复制,即复制邮件(Email)的同时不复制附件(Attachment)。 public class Attachment {

public void download() { System.out.println(\下载附件\ } }

public class Client { public static void main(String a[]) { Email email,copyEmail; email=new Email(); copyEmail=(Email)email.clone(); System.out.println(\); System.out.println(email==copyEmail); System.out.println(\==copyEmail.getAttachment?\ System.out.println(email.getAttachment()==copyEmail.getAttachment()); } }

public class Email implements Cloneable { private Attachment attachment=null; public Email() { this.attachment=new Attachment(); }

public Object clone() { Email clone=null; try { clone=(Email)super.clone(); }

catch(CloneNotSupportedException e)

{ System.out.println(\failure!\ } return clone; } public Attachment getAttachment() { return this.attachment; } public void display() { System.out.println(\查看邮件\ } }

实例二:邮件复制(深克隆) 使用深克隆实现邮件复制,即复制邮件的同时复制附件。 import java.io.*;

public class Attachment implements Serializable {

public void download() { System.out.println(\下载附件\ } }

public class Client {

public static void main(String a[]) { Email email,copyEmail=null; email=new Email(); try{

copyEmail=(Email)email.deepClone(); } catch(Exception e) { e.printStackTrace(); } System.out.println(\); System.out.println(email==copyEmail); System.out.println(\==copyEmail.getAttachment?\ System.out.println(email.getAttachment()==copyEmail.getAttachment()); } }

import java.io.*;

public class Email implements Serializable { private Attachment attachment=null; public Email() { this.attachment=new Attachment(); } public Object deepClone() throws IOException, ClassNotFoundException, OptionalDataException { //将对象写入流中 ByteArrayOutputStream bao=new ByteArrayOutputStream(); ObjectOutputStream oos=new ObjectOutputStream(bao); oos.writeObject(this); //将对象从流中取出 ByteArrayInputStream bis=new ByteArrayInputStream(bao.toByteArray()); ObjectInputStream ois=new ObjectInputStream(bis); return(ois.readObject()); } public Attachment getAttachment() { return this.attachment; } public void display() { System.out.println(\查看邮件\ } }

相似对象的复制

class Student implements Cloneable { private String stuName; private String stuSex; private int stuAge; private String stuMajor; private String stuCollege; private String stuUniversity; public Student(String stuName,String stuSex,int stuAge,String stuMajor,String stuCollege,String stuUniversity) { this.stuName=stuName; this.stuSex=stuSex; this.stuAge=stuAge;

this.stuMajor=stuMajor; this.stuCollege=stuCollege; this.stuUniversity=stuUniversity; } public void setStuName(String stuName) { this.stuName = stuName; } public void setStuSex(String stuSex) { this.stuSex = stuSex; } public void setStuAge(int stuAge) { this.stuAge = stuAge; } public void setStuMajor(String stuMajor) { this.stuMajor = stuMajor; } public void setStuCollege(String stuCollege) { this.stuCollege = stuCollege; } public void setStuUniversity(String stuUniversity) { this.stuUniversity = stuUniversity; } public String getStuName() { return (this.stuName); } public String getStuSex() { return (this.stuSex); } public int getStuAge() { return (this.stuAge); }

public String getStuMajor() { return (this.stuMajor); } public String getStuCollege() { return (this.stuCollege); } public String getStuUniversity() { return (this.stuUniversity); } public Student clone() { Student cpStudent=null; try { cpStudent=(Student)super.clone(); } catch(CloneNotSupportedException e) { } return cpStudent; } }

class MainClass { public static void main(String args[]) { Student stu1,stu2,stu3; stu1=new Student(\张无忌\男\软件工程\软件学院\中南大学\//状态相似 //使用原型模式 stu2=stu1.clone(); stu2.setStuName(\杨过\ //使用原型模式

搜索更多关于: 郑州大学软件学院设计模式 的文档
郑州大学软件学院设计模式.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c9449s6o08m6d7jn4l22e_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top