设计模式 王维雄.ppt_第1页
设计模式 王维雄.ppt_第2页
设计模式 王维雄.ppt_第3页
设计模式 王维雄.ppt_第4页
设计模式 王维雄.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件设计模式(Design Patterns )是面向对象软件的基础、内部训练、王维雄等、7/27/2020、内容摘要、1 .设计模式介绍、7/27/2020,成为可再利用的牛人! 为什么有相似的功能,大牛马上解决之后,慢慢地午睡洗宝。 我自己加班到天亮才能拿到。 为什么用户提出需求变更后,大牛只是把牛鼻子盘敲到斯玛特上,变更配置? 然后,自己重新修查询密码,删建,几乎晕倒,最后只能再一次倾复。 为什么大牛写的普计程仪拉姆测试上线了后,执行得几乎完美,使用者并不完美自己的普计程仪拉姆遗漏缺陷多,一个重新抽出另一个,按葫芦套葫芦,几乎崩溃。 7/27/2020,为什么要学习设计模式? 多路复用溶

2、解热:可以通过多路复用已批准的设计,在解决问题时获得先发优势。 可以避免重复。 你也有疑问:那样的项目吗? 确定共同用语:的发展中的交流和团队精神需要共同的用语基础和问题的共识。 沟通如果双方都学习了设计模式的交流会很舒服也许能找到想要看设计模式的答案改善工作团队的交流和个人学习。 一个工作团队一起学习设计模式有助于提高工作团队的战斗力。 使查询密码的修正和维护变得容易。 由于设置修订模型是经有日子验证的溶解热,它们的结构长期发展形成,善于应对变化。 模型有助于提高思考水平。 学习模式,即使不使用模式中的方法,也可以采取更好的策略来解决问题。 7/27/2020,1.1设计模式介绍-什么是设计

3、模式?设计模式被重复使用并且是查询密码设计经验总结,其分类和分类为许多人知道的。分类。 1970年建筑设计大师亚力山大。 术语“软件设计模式”是20世纪90年代Erich Gamma等4人引进的解决同一问题的不同表相。 使用设计模式是为了重复使用查询密码,使查询密码更容易被他人理解,保证查询密码的可靠性。 毫无疑问,设计模式是别人在系统中获胜多少,设计模式是将查询密码制作真正工程化,设计模式是软件工程师环的基础,如同大厦的砖石。 在项目工程中合理运用设定修正模型可以完美地解决许多问题,各模型目前有相应的原理来应对,各模型描绘了我们周围反复发生的问题及其问题的核心解决方案,这也是能够广泛应用的原

4、因。7/27/2020、1.2设计模式介绍-在23种设计模式下创建对象时,不直接对对象进行斯坦共和国化,而是通过基于特定场景的化学基,由程序决定对象的创建方法成型模式主要包括简单的factory模式(23种设置修订模式之一)、工厂模式、抽象factory模式、单斯坦共和国模式、生成器模式和手板模型模式。 结构类型有助于将多个对象组织成更大的结构。 结构模式主要包括适配器模式、桥接模式、组合器模式、装饰模式、门模式、汉元模式和在线代理定模式。 行为类型鼎力相助系统之间的对象的通讯,并且用于如何控制复杂系统的过程。 行为模式主要包括指令模式、解释程序模式、重复模式、中介模式、备忘录模式、观察者模式

5、、状态模式、策略模式、数字大板块模式、访问者模式。7/27/2020、1.3设计模式的6项原则,1、单一责任定义:不存在多个类别变更的原因。 一般来说,一个班只负一个责任。 问题的由来: t级负责两个不同的责任:责任P1、责任P2。 如果由于职务P1的需要改变而需要修改等级t,则原本正常动作的职务P2的功能有可能发生故障。解决办法:遵循单一职务原则。 分别创建两个类T1和T2,使T1完成责任P1功能,使T2完成责任P2功能。 因此,当校正级别T1时,以使得不会在职务P2中发生故障风险的方式,即使校正T2,在职务P1中也不会发生故障风险。 服从单一职责的原有优点可以降低类的复杂性,一个类只负责一

6、个职责,其逻辑总是比负责多个职责简单得多。 提高类的可读性,提高系统的维护性变更带来的风险降低、变更是必然的,只要遵守单一的职务原则,修改一个功能就可以显着降低对其他功能的影响。7/27/2020、1.3设计模式的6个原则、2、地震震级替换原则(Liskov Substitution Principle )子类可以扩展父类的功能,但不能更改父类的原始功能定义1 :每个类型为T1的对象问题的由来:有功能P1,在a级完成。 当前,需要对功能P1进行扩展,扩展后的功能是p,其中p由原始的功能P1和新的功能P2组成。 当新功能p在类a的子类b中完成时,子类b完成新功能P2时,云同步可能会发生原始功能P

7、1的故障。 解决方案:使用继承时,请遵循地震震级替换原则。 如果类b继承了类a,则除了添加新方法以完成新功能P2之外,尽量不要重写父类a的方法。 此外,尽可能不要重装父类a的方法。7/27/2020、1.3依赖于设置修正模式的6个原则、3、倒置原则定义:上级模块不应依赖于下级模块,两者都应该依赖于抽象的抽象不应该依赖于细节的细节应该依赖于抽象。 问题的由来: a类直接依赖于b类,要将a类更改为依赖于c类,必须通过修改a类的查询密码来完成。 在这种情况下,a类通常是更高级的模块,负责复杂业务逻辑的b类和c类是更低级的模块,如果修改负责基本原子操作的a类,则会给计划计程仪带来不必要的风险。 解决方

8、案:将类a修改为依赖于接口I,类b和c分别实现接口I,如果类a通过接口I间接连接到类b或c,修改类a的概率将大大降低。 实际上,低级模块必须尽可能具有抽象类和/或接口。 变量的声明类型尽可能是抽象类或接口。 使用继承时,请遵循地震震级替换准则。7/27/2020、1.3设置修改模式的6个原则、4、接口隔离原则定义:客户端依赖于不需要的接口的类对其他类的依赖必须在最小接口上建立。 问题的原因:类a通过接口I依赖于类b,类c通过接口I依赖于类d,如果接口I不是类a和b的最小接口,则类b和d不实现不需要的方法的解决方案:肥大化即,采用接口隔离的原则。 接口设置修订原则:接口尽量小,但有限。 虽然不能

9、通过将接口细分化来提高预计程仪编程的灵活性,但是如果过小则接口数过多,设定修正变得复杂。 所以一定要适度。 对于依赖于接口的类自定义服务,仅公开被调用的类所需的方法,不需要的方法则被隐藏。 只有着重于为单个模块提供定制服务时,才能建立最小的依赖关系。 提高凝聚力,减少对外交流。 用最小限度的方法完成最多的接口。7/27/2020、1.3设计模式的6个原则、5、德米利奥定律(最低知道的原则)的定义:一个对象应该对其他对象保持最低的理解。 问题的由来:类别和类别的关系越密切,结合度越大,一个类别变化对其他类别的影响也越大。 解决方法:尽量减少类与类之间的耦合。设计原则:只能与直接的小伙伴通讯,与陌

10、生人对话使不得。 过度使用这个原则会增加系统的复杂性。 因此,在采用德米特定律时需要反复折衷,结构清晰,高凝聚低耦合。7/27/2020、1.3设计模式的6个原则、6、开关原则定义:类、模块、函数等软件实体应该对扩展开放,对修改关闭。 问题的原因:在软件生命周期中,如果由于更改、升级、维护等原因需要修改软件的原始查询密码,则可能需要在旧查询密码中引入错误或重新建构整个功能,需要重新测试原始查询密码。 解决方案:如果需要更改软件,则通过扩展软件实体的行为来实现更改,而不是修改现有查询密码。 总结了7/27/2020、1.4设计模式的6个原则,利用抽象建构信息帧工作实现了扩展详细抽象合理(需求变更

11、的前瞻性和前瞻性),利用派生实现类的单个责任原理, 实现类的责任是单一的,河湾地引擎的原则是不破坏继承系统的,倒置的原则是面向接口编程的,接口隔离的原则是, 修订接口时表示极简化定单一。德米特里奥定律告诉我们降低结合。开关的原则是总纲,告诉我们向扩张开放,向修正关闭。 如何学习7/27/2020、1.4设计模式? 大设计模式浅显易懂,笔法幽默的深入挖掘了设计模式软件的秘密:设计模式是第一节的三个工厂模式,简单/静态工厂模式工厂方法模式抽象工厂模式主要是为创建对象提供迁移界面GOF在设计模式这本书中将成套设备模式分为工厂模式模式和抽象成套设备模式这两种。 简单工厂模式被认为是工厂方法模式的特例,

12、将两者分为一类,简单工厂模式类似于工厂计程仪的编程习惯,需要讲话。7/27/2020、3.1简单的工厂模式查询密码,确实很好吗? 案例:修正计算机,7/27/2020,3.1简单工厂模式,规范后,7/27/2020,3.1简单工厂模式,活字印刷-面向对象的维护,扩展,灵活,易于再利用(不复制)7/27/2020, 3.1简单工厂型号,/生产产品的工厂类publicclassproductfactorypublicstaticproductgenerateproduct (int which )/else if (which=2) returnor /调用工厂方法publicclientpubl

13、icmethod1() product factory.generate product (1); /抽象产品public接口产品/具体产品apublicproductaimplementproductproducta () /具体产品bpublicproductbimplementproducta () /具体产品bpublicproducta 优点:将对象调用方与对象创建过程分离,对象调用方需要对象时,直接向工厂请求即可。 这避免了对象的调用方和对象的实现类在硬编码体系中合并,从而提高了系统的可维护性和可扩展性。 缺陷:产品修改时,工厂类也要做相应的修改。 例如,在添加操作类时,求m数的n

14、次幂,就必须修正case。 必须修改原来的分类。 违反开放关闭的原则。解决7/27/2020、3.2工厂方法模式、简单工厂模式的扩展问题,7/27/2020、3.2工厂方法模式、FACTORY METHOD请MM去吃汉堡包,味道因MM而异。 记住每一个工厂模式模型:核心工厂类不是负责所有产品的创建,而是将具体创建的任务交给子类,成为抽象工厂的角色,提供具体工厂类必须实现的接口,7/22 3.2工厂方法模式(4个角色)/抽象产品:产品Plant接口public接口plant/具体产品: PlantA、plantbpublicccc ); public void do something () s

15、ystem.out.println (plantado something.publicclassplantbimplementsplantpublicplantb () system.out.pric ); public void do something () system.out.println (plantbdosomething./抽象工厂(工厂方法的核心):publicinterfaceabstractfactorypublicplantcreatepla /体工厂: publicclassfactoryaimplementsabstractfactorypublicplantcreateplant () return new planta (); publicclassfactorybimplementsabstractfactorypublicplantcreateplant () returnnewplantb (); /客户端调用工厂模式publicclientpublicmethod1() abstractfactoryinstancea=newfactorya (); 实例a .创建平台(); ab

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论