ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:18.04KB ,
资源ID:2955762      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2955762.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(架构分析及其设计应用模式.docx)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

架构分析及其设计应用模式.docx

1、摘要:一个设计模式是针对某一类问题最好处理方案,而且已经成功应用于很多系统设计中,它处理了在某种特定情境中反复发生某个问题,所以设计模式能够被定义为:设计模式是从很多优异软件系统中总结出成功可复用设计方案。 1. 关键字:工厂方法模式、简单程序实现、架构分析、设计模式 工厂方法模式 2. 工厂方法模式介绍 工厂方法(Factory Method)模式意义是定义一个创建产品对象工厂接口,将实际创建工作推迟到子类当中。关键工厂类不再负责产品创建,这么关键类成为一个抽象工厂角色,仅负责具体工厂子类必需实现接口,这么深入抽象化好处是使得工厂方法模式能够使系统在不修改具体工厂角色情况下引

2、进新产品。 1.1工厂方法模式角色和结构 抽象工厂(Creator)角色:是工厂方法模式关键,和应用程序无关。任何在模式中创建对象工厂类必需实现这个接口。 具体工厂(Concrete Creator)角色:这是实现抽象工厂接口具体工厂类,包含和应用程序亲密相关逻辑,而且受到应用程序调用以创建产品对象。 抽象产品(Product)角色:工厂方法模式所创建对象超类型,也就是产品对象共同父类或共同拥有接口。在上图中,这个角色是Light。 具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所定义接口。某具体产品有专门具体工厂创建,它们之间往往一一对

3、应。 1.2工厂方法模式应用 工厂方法常常见在以下两种情况中: 第一个情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体产品来。Java Collection中iterator() 方法即属于这种情况。 第二种情况,只是需要一个产品,而不想知道也不需要知道到底是哪个工厂为生产,即最终选择哪个具体工厂决定权在生产者一方,它们依据目前系统情况来实例化一个具体工厂返回给使用者,而这个决议过程这对于使用者来说是透明。 1.3工厂方法模式适用环境 在以下情况下能够使用工厂方法模式: (1)一个类不知道它所需要对象类:在工厂方法模式中,用户端不

4、需要知 道具体产品类类名,只需要知道所对应工厂即可,具体产品对象由具体工 厂类创建;用户端需要知道创建具体产品工厂类。 (2)一个类经过其子类来指定创建哪个对象:在工厂方法模式中,对于抽象工 厂类只需要提供一个创建产品接口,而由其子类来确定具体要创建对象, 利用面向对象多态性和里氏代换标准,在程序运行时,子类对象将覆盖父类对象,从而使得系统更轻易扩展。 (3)将创建对象任务委托给多个工厂子类中某一个,用户端在使用时能够 无需关心是哪一个工厂子类创建产品子类,需要时再动态指定,可将具体工厂类 类名存放在配置文件或数据库中。 2简单程序实现 下面是一个简单水果生产程

5、序,描述农场种植水果过程,目标是经过此次设计更深入了解工程设计模式,加强编程结构化能力。 2.1程序设计 程序设计以下: 在这个系统里需要描述下列水果: 葡萄Grape 草莓Strawberry 苹果Apple 水果生产过程就是生长,成熟后采摘。那么一个自然作法就是建立一个多种水果全部适用接口,方便和农场里其它植物区分开。水果接口要求出全部水果必需实现接口,包含任何水果类必需含有方法:种植plant(),生长grow()和收获harvest()。 代码清单1:接口Fruit 源代码 public interface Fruit { // 生长 vo

6、id grow(); //收获 void harvest(); //种植 void plant(); } Apple 类是水果类一个,所以它实现了水果接口所申明全部方法。另外,因为苹果是多年生植物,所以多出一个 treeAge 性质,描述苹果树树龄。下面是这个苹果类源代码。 代码清单2:类Apple 源代码 public class Apple implements Fruit { private int treeAge; //生长 public void grow() { log("Apple is gr

7、owing..."); } // 收获 public void harvest() { log("Apple has been harvested."); } //种植 public void plant() { log("Apple has been planted."); } // private boolean seedless; //生长 public void grow() { log("Grape is growing..."); } //收获

8、 public void harvest() { log("Grape has been harvested."); } //种植 public void plant() { log("Grape has been planted."); } //辅助方法 public static void log(String msg) { System.out.println(msg); } // 有没有籽取值方法 public boolean getSeedless() { return seedless; } //有没有籽赋值方法 pu

9、blic void setSeedless(boolean seedless) { this.seedless = seedless; } } Strawberry 类实现了Fruit 接口,所以,也是水果类型子类型,其源代码以下所表示。 代码清单4:类Strawberry 源代码 public class Strawberry implements Fruit { //生长 public void grow() { log("Strawberry is growing..."); } //收获 public void

10、harvest() { log("Strawberry has been harvested."); } // 种植 public void plant() { log("Strawberry has been planted."); } // 辅助方法 public static void log(String msg) { System.out.println(msg); } } 农场园丁也是系统一部分,自然要由一个适宜类来代表。这个类就 FruitGarde

11、ner 类,其结构由下面描述。 FruitGardener 类会依据用户端要求,创建出不一样水果对象,比如苹果 ( Apple ),葡萄( Grape )或草莓( Strawberry )实例。而假如接到不正当 要求, FruitGardener 类会抛出 BadFruitException 异常。 园丁类源代码以下所表示。代码清单5: FruitGardener 类源代码 public class FruitGardener { // 静态工厂方法 p

12、ublic static Fruit factory(String which) throws BadFruitException { if (which.equalsIgnoreCase("apple")) { return new Apple(); } else if (which.equalsIgnoreCase("strawberry")) { return new Strawberry(); } else if (which.equalsIgnoreCase("grape")) { return new Grape(); } else {

13、throw new BadFruitException("Bad fruit request"); } } } 能够看出,园丁类提供了一个静态工厂方法。在用户端调用下,这个方法创 建用户端所需要水果对象。 假如用户端请求是系统所不支持, 工厂方法就 会抛出一个 BadFruitException 异常。这个异常类源代码以下所表示。 辅助方法 public static void log(String msg) { System.out.println(msg); } // 树龄取值方法 pu

14、blic int getTreeAge() { return treeAge; } // 树龄赋值方法 public void setTreeAge(int treeAge) { this.treeAge = treeAge; } } 代码清单 6 : BadFruitException 类源代码 public class BadFruitException extends Exception { public BadFruitException(String msg) { su

15、per(msg); } } 在使用时,用户端只需调用 FruitGardener 静态方法 factory() 即可。请见 下面示意性用户端源代码。 代码清单 7 :实现种植即 Main() 实现 public class PlantFruit { public PlantFruit() { } public static void main(String[] args) { PlantFruit plantfruit = new PlantFruit();

16、try { // 种植葡萄 FruitGardener.factory("grape").plant(); FruitGardener.factory("grape").grow(); FruitGardener.factory("grape").harvest(); System.out.println("=============================="); // 种植苹果 FruitGardener.factory("apple").plant(); FruitGardener.factory("apple").grow(); Fr

17、uitGardener.factory("apple").harvest(); System.out.println("=============================="); // 种植草莓 FruitGardener.factory("strawberry").plant(); FruitGardener.factory("strawberry").grow(); FruitGardener.factory("strawberry").harvest(); System.out.println("============================

18、"); } catch (BadFruitException e) { } } } 到此为止,我们简单程序已经设计完成,我们能够经过创建 FruitGardener 对象来完成水果种植,不管你要种什么,只需调用对象中 factory() 方法。 工厂类示意性源代码以下所表示。 能够看出, 这个工厂方法创建了一个新具 体产品实例并返还给调用者。 代码清单8:Creator 类源代码 public class Creator { // 静态工厂方法 public stati

19、c Product factory() { return new ConcreteProduct(); } } 抽象产品角色关键目标是给全部具体产品类提供一个共同类型, 在最简单 情况下, 能够简化为一个标识接口。 所谓标识接口, 就是没有申明任何方法 空接口。 代码清单9:抽象角色 Product 接口源代码 public interface Product { } 具体产品类示意性源代码以下。 代码清单10:具体产品角色 ConcreteProduct 类源代码 public class ConcreteProduct implements Product { public ConcreteProduct(){} } 3、总结 设计模式实际上是良好思想一个提炼。每一个设计模式后面全部表现 了一个良好思绪。正如程序设计中众多模式一样,工厂模式也不是万能,也有自己不足,在处理问题过程中,要善于总结发觉新处理方法。世界在发展,技术在进步,总会有新方法替换旧方法。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服