设计模式学习分享_第1页
设计模式学习分享_第2页
设计模式学习分享_第3页
设计模式学习分享_第4页
设计模式学习分享_第5页
已阅读5页,还剩30页未读 继续免费阅读

VIP免费下载

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

文档简介

.,设计模式DesignPatterns,.,面向对象编程,对象(Object)对问题领域中事物的抽象万物皆对象唯一属性行为状态属于某类,Object-OrientedProgramming,问题领域(ProgramDomain)软件系统所模拟的真实世界中的系统,类(Class)一组具有相同属性和行为的对象的抽象,接口(Interface)系统对外提供的所有服务接口类型描述能够提供哪些服务,不包含服务的实现细节,抽象(Abstract)从特定角度出发,从已存在的一些事物中抽取所关注的特性,形成一个新的事物的思维过程从问题领域的事物到软件模型中对象的抽象从对象到类的抽象从子类到父类的抽象,基本概念,.,面向对象编程,继承(Inheritance)继承是子类使用父类的方法,Object-OrientedProgramming,封装(Encapsulate)隐藏对象的属性和实现细节,仅对外公开接口,多态(Polymorphism)接口的多种不同的实现方式即为多态,3大特征,.,面向对象编程,依赖(Dependency)类之间的调用关系,Object-OrientedProgramming,关联(Association)类之间的特定对应关系,聚集(Aggregation)整体与部分之间的关系,泛化(Generalization)类之间的继承关系,实现(Realization)类与接口之间的关系,5种关系,.,单一职责原则(SingleResponsibilityPrinciple)里氏替换原则(LiskovSubstitutionPrinciple)依赖倒转原则(DependenceInversionPrinciple)接口隔离原则(InterfaceSegregationPrinciple)迪米特法则(DemeterPrinciple)合成复用原则(CompositeReusePrinciple),总原则:开闭原则(OpenClosePrinciple)对扩展开放,对修改关闭为了使程序的扩展性好,易于维护和升级在程序需要进行拓展的时候,不能去修改原有代码,而是要扩展原有代码,实现一个热插拔效果,设计模式六大原则,6大原则,.,应该有且仅有一个原因引起类的变更,类的复杂性降低可读性提高可维护性提高变更风险低,.,所有引用基类的地方必须能透明地使用其子类的对象,子类必须完全实现父类的方法子类可以有自己的个性覆盖或实现父类的方法时输入参数可以被放大(子类输入参数的类型宽于父类)覆写或实现父类的方法时输出结果可以被缩小,.,面向接口编程,依赖于抽象而不依赖于具体,高层模块不应该依赖底层模块,两者都应该依赖其抽象抽象不应该依赖细节细节应该依赖抽象,.,接口尽量细化,同时接口中的方法尽量少,客户端不应该依赖它不需要的接口类间的依赖关系应该建立在最小的接口上接口要尽量小接口要高内聚定制服务接口设计是有限度的,.,一个对象应该对其他对象有最少的了解,只和朋友交流朋友间也是有距离的不是自己的就是自己的谨慎使用Serializable(序列化),.,尽量使用合成/聚合的方式,而不是使用继承,在面向对象设计中,可以通过两种方法在不同的环境中复用已有的设计和实现,即通过组合/聚合关系或通过继承,但首先应该考虑使用组合/聚合,组合/聚合可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少;其次才考虑继承,在使用继承时,需要严格遵循里氏代换原则,有效使用继承会有助于对问题的理解,降低复杂度,而滥用继承反而会增加系统构建和维护的难度以及系统的复杂度,因此需要慎重使用继承复用,.,设计模式概览,23种模式,创建型模式工厂方法模式抽象工厂模式单例模式建造者模式原型模式结构型模式适配器模式装饰器模式代理模式门面模式桥接模式组合模式享元模式行为型模式策略模式模板方法模式观察者模式迭代子模式责任链模式命令模式备忘录模式状态模式访问者模式中介者模式解释器模式,.,确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,.,定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到其子类,一个抽象产品类,可以派生出多个具体产品类一个抽象工厂类,可以派生出多个具体工厂类每个具体工厂类通常只能创建一个具体产品类的实例,.,为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类,多个抽象产品类,每个抽象产品类可以派生出多个具体产品类一个抽象工厂类,可以派生出多个具体工厂类每个具体工厂类可以创建多个具体产品类的实例,.,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,.,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可创建不同的表示,.,使用共享对象可有效地支持大量的细粒度的对象,.,为其他对象提供一种代理以控制对这个对象的访问,.,要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层的接口,使得子系统更易于使用,.,将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作,.,将抽象和实现解耦,使得两者可以独立地变化,.,将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性,.,将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性,+,+,+,.,定义一组算法,将每个算法都封装起来,并且使它们之间可以互换,.,当对象的状态改变时,同时改变其行为,.,定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,.,定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新,.,它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象内部细节,.,使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系,并沿着这条链传递该请求,直到有对象处理它为止,.,将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能,.,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态,.,封装一些作用于某种数据结构中的各元素的操作,它可

温馨提示

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

评论

0/150

提交评论