教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 法律文档 >

《Java设计模式》结课论文

来源:网络收集 时间:2026-09-02
导读: 《设计模式》结课论文 姓名:程奥琦老师:邓式阳 学号: 专业:计算机科学与技术(软件外包) 班级: 2011级1班 11021440102 论文题目:java程序设计模式 -工厂方法模式 :工厂方法模式(别名:虚拟构造) 定义一个用于创建对象的接口,让子类决定实例化哪一

《设计模式》结课论文

姓名:程奥琦老师:邓式阳 学号: 专业:计算机科学与技术(软件外包) 班级:

2011级1班

11021440102

论文题目:java程序设计模式

-工厂方法模式

<摘>:工厂方法模式(别名:虚拟构造)

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。

Mediator Pattern(Anothre Name:Virtual Constructor)

Define an interface for creating an object,but let subclasses Decide which class to instantiate.Factory Meyhod lets a class defer instantiation to subclasses.

------上述是摘自《Design Patterns》中GOF对工厂方法模式的高度概括

下面就Java程序设计模式中工厂模式做一些介绍以及设计一个简单的程序设计,再总结一些个人体会。

一 工厂方法模式的介绍

在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做。这个核心类则摇身一变,成为了一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。

1.1工厂方法模式角色

(1)抽象工厂(Creator)角色:担任这个角色的是工厂方法模式的核心,它是与应用程序无关的。任何在模式中创建对象的工厂类必须实现这个接口。在上面的系统中这个角色由Java 接口Creator 扮演;在实际的系统中,这个角色也常常使用抽象Java 类实现。

(2)具体工厂(Concrete Creator)角色:担任这个角色的是实现了抽象工厂接口的具体Java 类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用以创建产品对象。在本系统中给出了两个这样的角色,也就是具体Java 类ConcreteCreator1 和ConcreteCreator2。

(3)抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在本系统中,这个角色由Java 接口Product 扮演;在实际的系统中,这个角色也常常使用抽象Java 类实现。 (4)具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所声明的接口。工厂方法模式所创建的每一个对象都是某个具体产品角色的实例。

1.2工厂方法模式的适用环境

在以下情况下可以使用工厂方法模式:

(1)一个类不知道它所需要的对象的类:在工厂方法模式中,客户端不需要知道具体产品类的类名,只需要知道所对应的工厂即可,具体的产品对象由具体工厂类创建;客户端需要知道创建具体产品的工厂类。

(2)一个类通过其子类来指定创建哪个对象:在工厂方法模式中,对于抽象工厂类只需要提供一个创建产品的接口,而由其子类来确定具体要创建的对象,利用面向对象的多态性和里氏代换原则,在程序运行时,子类对象将覆盖父类对象,从而使得系统更容易扩展。

(3)将创建对象的任务委托给多个工厂子类中的某一个,客户端在使用时可以无需关心是哪一个工厂子类创建产品子类,需要时再动态指定,可将具体工厂类的类名存储在配置文件或数据库中。

二 做一个简单的程序设计

下面是一个简单的水果生产程序,描述农场种植水果的过程 程序设计步骤如下:

在这个系统里需要描述下列的水果: 葡萄 Grape

草莓 Strawberry 苹果 Apple

水果与其他的植物有很大的不同,就是水果最终是可以采摘食用的。那么一个自然的作法就是建立一个各种水果都适用的接口,以便与农场里的其他植物区分开。水果接口规定出所有的水果必须实现的接口,包括任何水果类必须具备的方法:种植plant(),生长grow()以及收获harvest()。 这个水果接口的源代码如下所示。 代码清单1:接口Fruit 的源代码 public interface Fruit { // 生长 void grow(); //收获 void harvest(); //种植 void plant(); }

Apple 类是水果类的一种,因此它实现了水果接口所声明的所有方法。另外,由于苹果是多年生植物,因此多出一个treeAge 性质,描述苹果树的树龄。下面是这个苹果类的源代码。 代码清单2:类Apple 的源代码 public class Apple implements Fruit { private int treeAge; //生长

public void grow() {

log(\} // 收获

public void harvest() {

log(\} //种植

public void plant() {

log(\}

// 辅助方法

public static void log(String msg) { System.out.println(msg); }

//树龄的取值方法 public int getTreeAge() { return treeAge; }

// 树龄的赋值方法

public void setTreeAge(int treeAge) { this.treeAge = treeAge; } }

同样,Grape 类是水果类的一种,也实现了Fruit 接口所声明的所有的方法。但由于葡萄分有籽和无籽两种,因此,比通常的水果多出一个seedless 性质,

…… 此处隐藏:491字,全部文档内容请下载后查看。喜欢就下载吧 ……
《Java设计模式》结课论文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/435872.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)