下载设计模式.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
下载设计模式

设计模式程序设计是思维具体化的一种方式,是思考如何解决问题的过程,设计模式是在解决问题的过程中,一些良好思路的经验集成,最早讲设计模式,人们总会提到 Gof ?的著作,它最早将经典的 23 种模式集合在一起说明,对后期学习程序设计,尤其是对从事对象导向程序设计的人们起了莫大的影响。后来设计模式一词被广泛的应用到各种经验集成,甚至还有反模式(AntiPattern),反模式教导您如何避开一些常犯且似是而非的程序设计思维。开闭原则“开闭”原则讲的是一个软件实体应当对扩展开放,对修改关闭。这个原则说的是, 在设计一个模块的时候,应当使这个模块可以在不被修改的前提不被扩展。换言之,应当可以在不必修改源代码的情况下改受这个模块的行为。 通过扩展已有的软件系统,可以提供新的行为,以满足对软件的新需求,使变化 中的软件系统有一定的适应性和灵活件。 已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使变化小的软件 系统有一定的稳定性和延续性。 解决问题的关键在于抽象化。在像Java语言这样的而向对象的编程语言里面,可以 给系统定义出一个一劳永逸、不再更改的抽象设计,此设计允许有无穷无尽的行为在实现. 里氏代换原则里氏代换原则的严格表达是:一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它 根本不能察觉出基类对象和子类对象的区别。 里氏代换原则是继承复用的基石。只有当衍生类可以替换掉基类,软件单位的功能不会受到影响时,基类才能真正被复用,而衍生类也才能够在基类的基础上增加新的行为。 依赖倒转原则在面向对象的系统里面,两个类之间可以发生三种不同的耦合关系: 零耦合关系:如果两个类没有耦合关系,就称之为零耦合。 具体耦合关系:具体耦合发生在两个具体的(可实例化 的)类之间,经出一个类对另外一个具体类的直接引用造成。抽象耦合关系:抽象耦合关系发生在一个具体类和一个抽象类之间,使两个必须发生关系的类之间存有最大的灵活性。 简单地说,依赖倒转原则要求客户端依赖于抽象耦合接口隔离原则一个接口对应一个角色,而不是多个角色。定制服务也一个重要的设计原则。它的意思是说,如果客户端仅仅需要某一些方法的话,那么就应当向客户端提供这些方法,而不要提供不需 要的方法。 迪米特原则在软件系统中,一个模块设计得好不好的标志,就是该模块在多大的程度上将自己的内部数据和其他与实现有关的细节隐藏起来。这一概念就是“信息的隐藏”,或者叫做“封装”,也就是大家熟悉的软件设计的基本教义之一。 信息的隐藏非常重要的原因在于,它可以使各个子系统之间脱耦。这种脱耦化可以有效地加快系统的开 发过程,因为可以独立地同时开发各个模块。它可以使维护过程变得容易,因为所有的模块都容易读懂,特别是不必担心对其他模块的影响。 一旦确认某一个模块是性能的障碍时,设计人员可以到对这个模块本身进行优化,而不必担心影响到其他的模块。 信息的隐藏可以促进软件的复用。一个系统的规模越大,信息的隐藏就越是重 要,而信息隐藏的威力也就越明显。 Simple Factory模式(又称Static Factory模式) 假设有一个八音盒工厂,购买八音盒的客人不用知道八音盒是如何制作的,他只要知道如何播放八音盒就可以了,以 UML 类别图来表示以上的概念:例子public interface IMusicBox { public void play();}public class PianoBox implements IMusicBox { public void play() { System.out.println(拨放钢琴音乐:)); }}public class ViolinBox implements IMusicBox { public void play() { System.out.println(拨放小提琴音乐^_^); }}例子public class MusicBoxFactory { public static IMusicBox createMusicBox(String name) throws InstantiationException, IllegalAccessException, ClassNotFoundException { // 这边使用的是Java的Reflection机制来产生实例 // 不过客户端不用管啦 // 以后就算改变了程序,客户端程序是不用更改的 return (IMusicBox) Class.forName(name).newInstance(); }}例子public class MusicBoxDemo { public static void main(String[] args) throws Exception { pl

文档评论(0)

peili2018 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档