培养实战型职业技术人才教学实例

时间:2022-09-09 08:26:50

培养实战型职业技术人才教学实例

摘 要:抽象工厂设计模式是很难让学生理解的教学内容,不但要介绍了设计模式的起源以及软件设计抽象工厂模式的概念,同时还要介绍使用抽象工厂设计模式实现系统支持多数据库访问的过程,想让学生理解抽象工厂设计模式的难度实在太大,想要讲好这部分内容对我们的教师来说同样有一定的挑战性,本文运用3W1H教学法着重于解决教学问题。

关键词:抽象工厂;设计模式;应用

1 为什么要使用抽象工厂设计模式

我们都知道简单工厂模式的基本原理是创建一个简单工厂,由它决定返回哪一个子类的实例,简单工厂实际的作用就是实例化子类对象。这种方法封装了“对象创建”工作,使用子类对象的人根本看不到对象是如何实例化的以及对象创建的时候是否调用了默认的构造函数,这样的代码更容易被他人理解。简单工厂分离了对象的创建与使用,工厂是整个模式的核心,以不变应万变,可以给系统带来更大的可扩展性。

工厂依赖于所有的子类产品,客户只需知道父类产品和工厂即可。这就像生活中你跟妈妈打电话说你饿了,你需要的是食物填饱肚子即可,而妈妈给你做了黑米饭、糖醋排骨、紫菜蛋花汤三种具体的食物。

当然你想换口味的时候可能要换提供食物的制造者,那么在软件设计中当客户想通过其他的工厂来实现同样的功能怎么办呢?我们想想这时仅修改简单工厂能不能实现?很显然,每当用户的需求变化时,我们几乎要把新闻阅读器的大部分代码改动一次。我们能否像自己可以随便选择餐馆去吃饭一样,实现只要改动选择工厂的代码就能够满足用户不同的要求呢?答案是完全可以实现的,所以我们要学习抽象工厂的设计模式来解决简单工厂不能一次创建一系列相互依赖对象的需求。

2 什么是抽象工厂设计模式

那么什么是抽象工厂的设计模式呢?如下图示:

图1

这就是我们所说的客户的要求可以只通过改动要使用的工厂来满足,我们用抽象工厂封装了各实体工厂的创建,用户使用不同的实体工厂时,也就使用了不同的实体工厂所提供的对象了,就像图三中我们只要选择不同的饭店,我们就会享受不同的美食一样。但是虽然图四中由于三个实体工厂分别满足了客户的不同需求,但系统的业务功能是不变的。

抽象工厂实现了一系列相互依赖对象的创建工作,其中的一系列相互依赖对象指的是抽象工厂对抽象产品的依赖、实体工厂对实体产品的依赖、抽象产品对实体产品的依赖以及这些对象之间有相互作用的关系。抽象工厂的设计模式和简单工厂的设计模式一样封装对象常规的创建方法(new),但是抽象工厂将实体产品对象的创建延迟到它的实体工厂子类中去了,抽象工厂实现了可以为用户提供多种不同的数据源实现方式,为了让用户灵活的选择所需的数据源实现方式,利用抽象工厂提供统一调用数据访问方法的方式,来指定由哪个数据源实体工厂来提供数据。和简单工厂一样,抽象工厂也是将对象的使用和创建工作相分离,同时抽象工厂只定义相关获取业务对象的抽象方法但不实现,由抽象工厂指定的实体工厂去实现,避免了调用数据访问方法和具体对象创建工作的紧耦合。

抽象工厂仅声明提供一个创建一系列相关或相互依赖对象的接口,不指定它们具体的类,而真正创建产品是由具体实体产品类创建的。客户通过他们的抽象接口也就是抽象产品操纵实例,不直接与实体产品打交道,同样客户也是通过抽象工厂获得抽象产品的,抽象工厂很容易改变一个应用的具体工厂,它只需改变具体的工厂即可使用不同的产品。

3 如何使用抽象工厂设计模式

那么我们该如何使用抽象工厂的设计模式构建我们的数据访问层呢?首先我们只要明确抽象工厂设计模式中各个对象的主要功能和职责就可以很轻松地实现了。通过以上的描述,我们可以总结出来:抽象工厂的主要功能是创建实体工厂并生产抽象产品;实体工厂实现抽象工厂的生产具体产品的使命,也就是生产实体产品;抽象产品实际上是对要实现的实体产品的规定和约束,提供实体产品访问的接口;实体产品按照接口中的约束实现自己的功能就可以了。

图2

由图2所示,我们要创建一个抽象工厂、两个实体工厂、用户和管理员抽象产品、SqlServer用户实体和管理员实体以及Access用户实体和管理员实体。抽象工厂的功能是实例化SqlServer实体工厂或Access实体工厂,并定义创建用户接口和管理员接口对象的方法;SqlServer实体工厂和Access实体工厂实现抽象工厂中定义的创建用户接口和管理员接口对象的方法;用户和管理员抽象产品实际上是用户和管理员接口,它们分别定义了用户和管理员应该实现的增删改查方法,但没有具体实现;所以SqlServer用户实体和管理员实体、Access用户实体和管理员实体来实现了用户和管理员接口中定义的增删改查方法。

4 抽象工厂设计模式的应用场合

抽象工厂设计模式的用途非常大,几乎所有的大型软件都用到了抽象工厂设计模式或者这种设计模式和其他设计模式的结合,我们经常玩的大型游戏,例如美国暴雪公司的星际和魔兽,一些门户网站如搜狐网和新浪网,一些通用软件如用友公司通用的财务软件等等。具体来说抽象工厂的设计模式体现在软件中支持多种观感标准的用户界面工具箱(Kit)或者游戏开发中的多风格系列场景,比如在游戏中根据用户的不同等级和身份使用不同的道具工具箱以及出现不同的道路、房屋、管道等战斗场景。随着软件市场的多元化,软件设计开发中使用抽象工厂设计模式来满足多种用户的要求也越来越广泛,让学生掌握这种设计模式是十分必要的。

培养实战型人才,就是从市场需求出发培养学生的技能,让学生在学校就能学习到市场所需要的技能,这样达到毕业生被企业招之能用的目的。

上一篇:利用PVT组件降低热斑效应危害的研究 下一篇:56例急性胰腺炎患者肝功能检测结果分析