设计模式案例分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计模式案例分析.doc

工厂模式Factory 定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。 作用: 扩展性和维持性 考虑这样一个实际应用:实现一个导出数据的应用框架,来让客户选择数据的导出方式,并真正执行数据导出。 在一些实际的企业应用中,一个公司的系统往往分散在很多个不同的地方运行,比如各个分公司或者是门市点,公司没有建立全公司专网的实力,但是又不愿意让业务数据实时的在广域网上传递,一个是考虑数据安全的问题,一个是运行速度的问题。 这种系统通常会有一个折中的方案,那就是各个分公司内运行系统的时候是独立的,是在自己分公司的局域网内运行。然后在每天业务结束的时候,各个分公司会导出自己的业务数据,然后把业务数据打包通过网络传送给总公司,或是专人把数据送到总公司,然后由总公司进行数据导入和核算。 通常这种系统,在导出数据上,会有一些约定的方式,比如导出成:文本格式、数据库备份形式、Excel格式、Xml格式等等。 现在就来考虑实现这样一个应用框架。在继续之前,先来了解一些关于框架的知识。 模式结构和说明 工厂方法模式的结构如图3所示: 图3 工厂方法模式结构示意图 Product: 定义工厂方法所创建的对象的接口,也就是实际需要使用的对象的接口。 ConcreteProduct: 具体的Product接口的实现对象。 Creator: 创建器,声明工厂方法,工厂方法通常会返回一个Product类型的实例对象,而且多是抽象方法。也可以在Creator里面提供工厂方法的默认实现,让工厂方法返回一个缺省的Product类型的实例对象。 ConcreteCreator: 具体的创建器对象,覆盖实现Creator定义的工厂方法,返回具体的Product实例。 工厂方法模式示例代码 (1)先看看Product的定义,示例代码如下: /** *工厂方法所创建的对象的接口 */ public interface Product { //可以定义Product的属性和方法 } (2)再看看具体的Product的实现对象,示例代码如下: /** *具体的Product对象 */ public class ConcreteProduct implements Product { //实现Product要求的方法 } (3)接下来看看创建器的定义,示例代码如下: /** *创建器,声明工厂方法 */ public abstract class Creator { /** *创建Product的工厂方法 * @return Product对象 */ protected abstract Product factoryMethod(); /** *示意方法,实现某些功能的方法 */ public void someOperation() { //通常在这些方法实现中,需要调用工厂方法来获取Product对象 Product product = factoryMethod(); } } (4)再看看具体的创建器实现对象,示例代码如下: /** *具体的创建器实现对象 */ public class ConcreteCreator extends Creator { protected Product factoryMethod() { //重定义工厂方法,返回一个具体的Product对象 return new ConcreteProduct(); } } 使用工厂方法模式来实现示例 要使用工厂方法模式来实现示例,先来按照工厂方法模式的结构,对应出哪些是被创建的Product,哪些是Creator。分析要求实现的功能,导出的文件对象接口ExportFileApi就相当于是Product,而用来实现导出数据的业务功能对象就相当于Creator。把Product和Creator分开过后,就可以分别来实现它们了。 使用工厂模式来实现示例的程序结构如图4所示: 图4 使用工厂模式来实现示例的程序结构示意图 下面一起来看看代码实现。 (1)导出的文件对象接口ExportFileApi的实现没有变化,这里就不去赘述了 (2

文档评论(0)

jackzjh + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档