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