设计模式复习提纲.docx_第1页
设计模式复习提纲.docx_第2页
设计模式复习提纲.docx_第3页
设计模式复习提纲.docx_第4页
设计模式复习提纲.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

UML特点:工程化规范化可视化系统化文档化智能化类图:类与类之间关系:1.关联关系(Association):体现一种拥有关系(在容器类中将另一个类作为自己的成员变量)a.双向关联b.单向关联c.自关联d.重数性关联e.聚合关系:表示一个整体与部分的关系(部分可以脱离整体)实现方式:注入(在外面new一个对象,然后装载进来)构造注入:public class Car private Engine engine;public Car(Engine engine) this.engine = engine;public class Engine .set注入:public class Car private Engine engine;public void setEngine(Engine engine) this.engine = engine;public class Engine .接口注入:f.组合关系:表示一个整体与部分的关系(同生共死,整体控制部分的生存周期)实现方法:在容器的构造函数中去new部分public class Head private Mouth mouth;public Head() mouth = new Mouth();public class Mouth .2.依赖关系(使用关系)(Dependency):表示一个事物使用另一个事物表现形式:在某个类的方法中调用了另一个类的对象作为参数某个类的方法中将另一个类的对象作为局部变量在一个类的方法中调用你一个类的静态方法public class Driver public void drive(Car car) car.move();public class Car public void move() .3.泛化关系:继承关系(继承的目的是扩展)4.接口(所有方法都是抽象)与实现关系:接口是为了扩展面向对象设计原则:目标:开闭原则基础:里氏代换手段:依赖倒转原则一个好的系统应该具备:可扩展性灵活性可插入性设计原则:1.单一职责原则(SRP):类的职责要单一(一个类不能太累了)2.开闭原则(OCP):对扩展开放,对修改关闭(抽象化是关键)3.里氏代换原则(LSP):可以接受基类对象的地方一定可以接受子类对象(子类对象可以覆盖父类对象)实现基础:只有在父类中已经声明的方法才能在子类中调用缺点:无法调用子类新增方法4.依赖倒转原则(DIP):针对接口编程关键:以抽象方式耦合依赖注入:将一个类的对象传入另一个类,注入时应尽量注入父类对象,程序运行时通过子类对象来覆盖父类对象构造注入设值注入接口注入5.接口原则(ISP):使用多个专门的接口来代替一个统一的接口(确保系统的封装性)注意:接口的粒度6.合成复用原则(CRP):多用关联,少用继承继承:优点:实现简单,扩展灵活缺点:(没有选择性,会造成类的污染)a.破坏封装性(无论父类中方法如何,子类都会继承过来),而且父类方法改变,子类也会改变b.在有限条件下使用c.不能更换父类7.迪米特法则(LoD):一个软件实体对其他实体的引用越少越好设计模式:模式:对于某一类重复出现的问题,一个成功有效的解决方式(做事情的套路)设计模式基本要素:模式名称问题解决方案效果分类:根据目的:创建型:对象的创建和使用分离结构型:如何将类和对象组合在一起,形成功能更强大的结构行为型:类和对象如何交互和分配职责根据范围:类模式对象模式简单工厂模式(Simple Factory Pattern);根据参数的不同返回不同类的实例前提:返回类型是父类型(抽象产品类)优点:工厂类含有必要的判断逻辑,实现对责任的分割客户端无需知道具体产品的类名,值需要知道具体产品类对应的参数更换产品类不用修改源代码缺点:工厂类的职责过重增加系统中类的个数增加新类需要修改工厂类静态工厂方法不支持动态多态适用环境:工厂类负责创建的对象比较少客户端只知道传入工厂类的参数,对于如何创建对象不关心工厂方法(Factory Method Pattern):父类工厂创建产品对象的公共接口,子类工厂负责生成具体的产品对象。目的是将产品类的实例化延迟到子类工厂中优点:用户只需要关心所需产品对应的工厂,无需关心创建细节工厂可以自主决定创建何种产品对象,而创建该产品的细节完全封装在具体工厂中增加新产品无需修改源代码缺点:类的个数增加增加抽象性和理解难度适用环境:一个类不需要知道它所需要的对象的类一个类通过其子类来指定创建哪个对象客户端在使用是无须关心是哪一个工厂子类创建产品子类,需要时再动态指定抽象工厂(Abstract Factory Pattern):提供一个创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类产品等级结构:产品的继承结构产品族:由同一个工厂生产的,位于不同产品结构中的一组产品优点:隔离了具体类的生成,实现高内聚低耦合的目的保证客户端只使用同一个产品族中的对象增加新的产品族无需修改系统缺点:创建新的产品等级结构需要修改系统(开闭原则的倾斜性)适用环境:系统不依赖产品类实例如何被创建有多于一个产品族属于同一个产品族的产品将在一起使用所有产品以同样的接口出现,客户端不依赖于具体实现(依赖倒转原则)单例模式(Singleton Pattern):确保某一个类只有一个实例,并且自动实例化向整个系统提供该实例要点:一个类只有一个实例它必须自行创建该实例必须自行向整个系统提供该实例优点:提供了对唯一实例的受控访问,同样也实现的使用和创建分离节约系统资源允许可变数目的实例缺点:扩展很困难(静态方法不支持动态多态)单例类职责过重滥用单例类将带来负面问题适用环境:系统只需要一个实例对象只允许使用同一个公共访问点注意问题:不要使用单例模式存取全局变量不要将数据库连接做成单例适配器模式(Adapter Pattern):将一个接口转化成客户希望的另一个接口,使接口不兼容的那些类可以在一起工作类适配器:public class Adapter extends Adapter implements Target public void request() super.specificRequest();对象适配器:public class Adapter extends Target private Adaptee adaptee;public Adapter (Adaptee adaptee) this.adaptee = adaptee;public void request() adaptee.specificRequest();优点:将目标类和适配者类解耦增加类的透明性和复用性灵活性(可以有选择的覆盖社适配者的方法)和扩展性对象适配器:可以将多个适配者适配到同一个目标缺点:类适配器:一次只能适配一个适配者对象适配器:想要置换适配者不是很容易适用环境:系统需要适用现有的类,但是这些类的接口不符合系统要求想要建立一个可以复用的类,用于与一些彼此间没有太大关系的一些类一起工作外观模式(Facade Pattern):给复杂的子系统访问提供一致的接口优点:对客户端屏蔽子系统组件实现子系统与系统间的松耦合关系降低了大型系统中的编译依赖性(独立改变子系统而不会影响其他子系统)只是提供访问子系统的统一入口,并不影响用户直接使用子系统缺点:不能限制客户端使用子系统增加新的子系统需要修改源代码适用环境:为复杂系统提供简单接口客户程序与多个子系统直接存在很大的依赖性在层次化结构中,定义每一层的入口代理模式(Proxy Pattern):给某一个对象提供一个代理,并由代理控制对原对象的引用优点:协调调用和被调用者远程代理使得客户端可以访问远程机器上的对象虚拟代理可以减少系统资源的消耗保护代理可以控制对真实对象的使用权限缺点:造成请求速度变慢实现复杂适用环境:远程代理虚拟代理保护代理缓冲代理防火墙代理同步化代理智能引用代理观察者模式(Observer Pattern):定义对象间的一对多依赖关系,当一个对象状态发生改变时,其他对象都可以

温馨提示

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

评论

0/150

提交评论