zoukankan      html  css  js  c++  java
  • 设计模式汇总

    设计模式汇总

    笔者所发表的设计模式系列的随笔一共包含15篇,归纳总结了《Head First 设计模式》一书中的内容。在这些随笔中,尽量用简洁、概括的语言说明每个模式的概念、特点、用法,并配以图片(类图、流程图)给读者一种直观、具体的印象。希望大家能有所收获。
     
    模式汇总
    1. 装饰着: 包装一个对象,已提供新的行为
    2. 状态: 封装了基于状态的行为,以使 状态拥有者将行为委托到当前的状态
    3. 迭代器: 在对象的集合之间游走,而不暴露集合的实现
    4. 外观: 简化一群类的接口
    5. 策略: 封装可以互换的行为,并使用委托来决定要使用哪一个。
    6. 代理: 包装对象,以控制对此对象的访问。
    7. 工厂方法: 封装实例化的行为,工厂子类决定实例化哪个具体的类、采用什么策略实例化类
    8. 适配器: 封装对象并提供不同的接口
    9. 观察者: 让对象能够在状态改变时被通知
    10. 模板方法:父类定义算法的模板, 由子类决定如何实现算法中的某些步骤
    11. 组合: 客户用一致的方法处理对象的集合和单个对象
    12. 单件: 确保有且只有一个对象被创建
    13. 抽象工厂: 允许客户创建对象的家族,而无需指定它们的具体类
    14. 命令: 封装请求,成为对象
     
    相似模式的比较
    • 装饰者: 包装另一个对象,并提供额外的行为
    • 外观: 包装许多对象,以简化它们的接口
    • 代理:包装另一个对象,并控制对它的访问
    • 适配器:包装另一个对象,并提供不同的接口
     
    设计原则汇总
    1. “封装变化”。找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码放在一起。
    2. 针对接口编程,而不是针对实现编程。
    3. 对用组合,少用继承。
    4. 为交互对象之间的松耦合设计而努力。
    5. 对扩展开放,对修改关闭。
    6. 要依赖抽象,不要依赖具体类
    7. 最少知识原则:只和你的密友谈话
    8. 好莱坞原则:(高层组件对待底层组件的方式)别调用(打电话给)我们,我们会调用(打电话给)你。
    9. 单一责任,一个类应该只有一个引起变化的原因
     
    模式的概念:
    (看了这么多设计模式,我们再来回顾一下“模式”的概念,以及我们应该怎样来应用这些模式)
    模式:是在某情景(context)下,针对某问题的某种解决方案。
    • 问题:包括目标和约束。
    • 解决方案:一个通用的设计,用来解决约束,达到目标。
     
    1、对于每个问题,我们应该思考的内容:
    2、结果决定功能。类的结构决定类的功能,汽车的结构决定了汽车的功能……
    3、设计应“保持简单”。Keep It Simple。“将你的思想集中在设计本身,而不是在模式上。只有在真正需要时才使用模式”。
     
    设计模式分类(1):
    “不管是在什么时候,只要我们有一大堆东西,很自然的就会想要为它们分类,这可以帮助我们再更抽象的层次上思考这些问题”
    1、创建型模式:涉及到将对象实例化。这类模式都提供一个方法,将客户从所需要实例化的对象中解耦。
          例如:Singleton、Factory Method、Abstract Factory、Builder、Prototype
    2、行为型模式:都涉及到类和对象如何交互及分配职责。
         例如:Template Method、Iterator、Command、Observer、State、Strategy、Mediator、Visitor、Memento、Interpreter、Chain of Responsibility
    3、结构型模式:描述类和对象如何被组合以建立新的结构或新的功能。
          例如:Decorator、Composite、Proxy、Facade、Adapter、Flyweight、Bridge
     
    设计模式分类(2):
    1、类模式:描述类之间的关系如何通过继承定义。类模式的关系是在编译时建立的。
         Template Method、Factory Method、Adapter、Interpreter
    2、对象模式:描述对象之间的关系,而且主要是利用组合定义。对象模式的关系通常在运行时建立,而且更加动态,更具有弹性。
         Composite、Decorator、Proxy、Strategy、Iterator、Command、Facade、Observer、State、Abstract Factory、Singleton、Visitor、Memento、Chain of Responsibility、Bridge、Flyweight、Prototype、Builder、Mediator
     
     
     
     
     
    分类: 设计模式
    标签: 设计模式
  • 相关阅读:
    [ZOJ 4062][2018ICPC青岛站][Plants vs. Zombies]
    [Wannafly挑战赛28][B msc和mcc][预处理+枚举]
    [codeforces Mail.Ru Cup 2018 Round 1 D][ xor 操作]
    [codeforces round#475 div2 ][C Alternating Sum ]
    [zoj4045][思维+dfs]
    [zoj4046][树状数组求逆序(强化版)]
    费马大定理以及求解a^2+b^2=c^2的奇偶数列法则
    【HDOJ3567】【预处理bfs+映射+康拓展开hash】
    POJ1279 Art Gallery 多边形的核
    第八周 Leetcode 44. Wildcard Matching 水题 (HARD)
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3013308.html
Copyright © 2011-2022 走看看