软件设计与体系结构课程实验报告书.doc

软件设计与体系结构课程实验报告书.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

教务系统

实验目的:

学习工厂模式;

掌握简单工厂模式的用法,以及其优缺点;

掌握抽象工厂模式的用法,以及其优缺点。

实验内容:

假设我们开发一个教务管理系统,现在教务处已经购买了Oracle数据库的2年使用权,且数据库中有大量数据,不能短时间内进行数据库迁移。教务处提出一个要求,希望我们的系统现在可以支持Oracle,但在他们需要的时候,增加支持MySql、SQLServer的功能,请用简单工厂模式实现这一需求。(提示:具体代码可以数据读取写入工作抽象为一行命令行输出,但是核心的类关系必须给出。)

请用抽象工厂模式实现出以上需求。

简单工厂

优点:

工厂方法包含从一个类的结构中选择初始类的业务逻辑。

客户类不直接创建产品类的对象。客户类只作为对象的消费者。

简单工厂方法模式实现了责任分离。

客户类不负有创建类的对象的责任,因此如果有新产品子类加入,不必修改已有的客户类代码。

缺点:

简单工厂方法模式不符合开闭原则。

简单工厂类只能是一个单独的类,而不能成为一个层次的类

抽象工厂

优点:

1、具体产品从客户代码中被分离出来

2、容易改变产品的系列

3、将一个系列的产品族统一到一起创建

缺点:

在产品族中扩展新的产品是很困难的,它需要修改抽象工厂的接口

类图

实验总结

对于简单工厂和抽象工厂的学习有了初步的认识,在此学习中基本了解了什么情况下使用简单工厂和抽象工厂。

简单工厂:

1、工厂类负责创建的对象比较少;

2、客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;

3、由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。

抽象工厂:

1、一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。

2、这个系统有多于一个的产品族,而系统只消费其中某一产品族。

3、同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。

4、系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。

网络连接

实验目的:

学习单例模式;

掌握单例模式的用法,以及其优缺点;

实验内容:

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

根据下面的UML图,完成相关的代码,要求为:

成功运行所给代码;

运用线程安全的单例模式重新设计软件框架;

用代码完成你的设计。

JFrame

JFrame

ClientGUI

-objLogon:LogonGUI

-issueWarning()

+actionPerformed(ActionEvente)

JFrame

SingleLogonGUI

-instance:SingleLogonGUI;

+getInstance():SingleLogonGUI

-isValideCustomer:boolean

-issueWarning()

-issueSuccess()

+actionPerformed(ActionEvente)

3.单例模式

单例模式:单例模式作为对象的一种创建模式,它的作用是确保某一个类在整个系统中只有一个实例,而且自行实例化并向整个系统提供这个实例。

其特点:

1、单例类只能有一个实例

2、单例类必须自己创建自己唯一的实例

3、单例类必须给所有其他对象提供这一实例

优点:

1、实例控制

单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。

2、灵活性

因为类控制了实例化过程,所以类可以灵活更改实例化过程。

缺点:

1、开销

虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。

2、可能的开发混淆

使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。

3、对象生存期

不能解决删除单个对象的问题。在提供内存管理的语言中,只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。在某些语言中,其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。

运行图示:

5.相关代码:

ClientUI.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassClientUIextendsJFrame{

privatest

您可能关注的文档

文档评论(0)

138****8242 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档