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

下载本文档

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

文档简介

设计模式DesignPatternsOOP概要六大原则创建型结构型行为型面向对象编程对象(Object)『对问题领域中事物的抽象』◆万物皆对象◆唯一◆属性行为◆状态◆属于某类Object-OrientedProgramming问题领域(ProgramDomain)『软件系统所模拟的真实世界中的系统』类(Class)『一组具有相同属性和行为的对象的抽象』接口(Interface)『系统对外提供的所有服务』『接口类型』描述能够提供哪些服务,不包含服务的实现细节抽象(Abstract)『从特定角度出发,从已存在的一些事物中抽取所关注的特性,形成一个新的事物的思维过程』◆从问题领域的事物到软件模型中对象的抽象◆从对象到类的抽象◆从子类到父类的抽象基

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

温馨提示

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

评论

0/150

提交评论