1 / 13
文档名称:

软件素养报告-设计模式.doc

格式:doc   大小:66KB   页数:13页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件素养报告-设计模式.doc

上传人:63229029 2017/10/23 文件大小:66 KB

下载得到文件列表

软件素养报告-设计模式.doc

文档介绍

文档介绍:烟台大学
软件素养(3)大作业
专业: 软件工程
班级:___计控124-4 ___
姓名: 邱学伟
学号: 201258504405


(1) 装饰者模式
装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式是动态地扩展一个对象的功能,而不需要改变原始类代码的一种成熟模式。在装饰模式中,“具体组件”类和“具体装饰”类是该模式中的最重要的两个角色。动态地给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。
(2) 代理模式
代理模式是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式是为对象提供一个代理,代理可以控制对它所代理的对象的访问。代理模式最常见的两种情况:远程代理和虚拟代理。为其他对象提供一种代理以控制对这个对象的访问。
(3) 观察者模式
观察者设计模式定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的独享都得到通知并自动刷新。在许多设计中,经常涉及到多个对象都对一个特殊对象中的数据变化感兴趣,而且这多个对象都希望跟踪那个特殊对象中的数据变化。定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新。

(1) 装饰模式
某图书管理系统中,书籍类(Book)具有借书方法borrowBook()和还书方法returnBook() 。现需要动态给书籍对象添加冻结方法freeze()和遗失方法lose()。使用装饰模式设计该系统,绘制类图并编程实现。
(2) 代理模式
应用软件所提供的桌面快捷方式是快速启动应用程序的代理,桌面快捷方式一般使用一张小图片来表示(Picture),通过调用快捷方式的run()方法将调用应用软件(Application)的run()方法。使用代理模式模拟该过程,绘制类图并编程实现。
(3) 观察者模式
某在线股票软件需要提供如下功能:当股票购买者所购买的某支股票价格变化幅度达到5%时,系统将自动发送通知(包括新价格)给购买该股票的股民。现使用观察者模式设计该系统,绘制类图并编程实现。

(1) 装饰模式
package DirectorPattern;
interface Book
{
void borrowBook();
void returnBook();
}
final class MyBook implements Book
{
public void borrowBook(){
("MyBook borrowing!");
}
public void returnBook(){
("MyBook returning!");
}
}
abstract class BookDirector implements Book
{
private Book book;

public BookDirector(Book book)
{
("Book directoring!");
=book;
}

public void borrowBook(){
();
}

public void returnBook(){
();
}
}
class NewBook extends BookDirector
{
public NewBook(Book book)
{
super(book);
("Book changed to NewBook!");
}

public void freeze()
{
("Book freezing!");
}
public void lose()
{
("Book lost!");
}
}
public class BookDirectorClient {
public static void main(String a[])
{
//半透明
Book book=new MyBook()