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

    写在前面

    在软件工程中,设计模式(Design Patterns)是一种通用的、可重用的解决方案。

    在一个实际的软件开发的生命周期过程中,我们可以在DP这个宝库中反复寻找一个或者几个可以用于解决软件设计问题方法。其根本目的,就是为了实现了面向对象的SOLID原则,从而达到了代码复用、增加可维护性的目的。

    设计模式不是一个事实上已经完成的设计,它无法直接转换成我们需要的最终代码,只能算是形式化的描述或模板化的如何解决具体问题的套路。掌握DP的最好做法,就是我们自己动手去把他们一一实现吧。实践出真知嘛!另外,设计模式只描述类和对象之间的交互作用,而不是解决大规模的或是整体性的软件架构问题的良方秘药。

    设计模式是软件开发人员非常强大的工具,但是必须注意,DP不应该被视为软件的规范性约定,而只是一种手段。非常重要的一点是,我们需要做到的是理解每个模式的概念,特别是其背后涉及的设计思路和解决思想,而不仅仅是记住它们的具体实现,比如类、方法和属性等等。

     

    注意:每个软件开发人员都应该知道在何时何地如何恰当地应用每一个具体模式。不恰当的使用或是滥用都不仅会导致应用程序的低性能,还会增加代码的复杂性和可维护性。

     

    一般来说,软件的设计模式可以分为三类:

    1、创建型模式(Creational Design Patterns)

    2、结构型模式(Structural Design Patterns)

    3、行为型模式(Behavioral Design Patterns)

    一、创建型(Creational DP)

    创建型模式是用于处理对象创建机制的一类DP,主要适用于普通的创建对象形式可能导致设计问题或增加代码的复杂性的情况。

    创建型模式主要是描述了一个时刻。主要包括下面5种:

    1、抽象工厂模式(Abstract factory)

    2、建造者模式(Builder)

    3、工厂方法模式(Factory method)

    4、原型模式(Prototype)

    5、单例模式(Singleton)

    二、结构型(Structural DP)

    结构型模式是通过使用简单、实际的方法来实现不同实体间的关系来达到简化设计的目的。

    结构型模式主要描述了一个静态结构。主要包括下面7种:

    1、适配器模式(Adapter)

    2、桥接模式(Bridge)

    3、组合模式(Composite)

    4、装饰模式(Decorator)

    5、外观模式(Facade)

    6、享元模式(Flyweight)

    7、代理模式(Proxy)

    三、行为型(Behavioral DP)

    行为型模式解释了不同对象间是如何相互协作的。它描述了不同的对象和类为了达到目标而从中进行消息的发送,以及如何在不同的对象之间任务步骤的划分。

    行为型模式主要描述了一个过程或流程。主要包括下面11种:

    1、责任链模式(Chain of responsibility)

    2、命令模式(Command)

    3、解释器模式(Interpreter)

    4、迭代器模式(Iterator)

    5、中介模式(Mediator)

    6、备忘录模式(Memento)

    7、观察者模式(Observer)

    8、状态模式(State)

    9、策略模式(Strategy)

    10、模板模式(Template)

    11、访问者模式(Visitor)

     

    结尾

    设计模式从根本上来说是一套精妙的武功招式, 其根源是为了服务于面向对象设计与开发。

    限于文章篇幅(反正本人是不喜欢看太长的文章的o(︶︿︶)o ),将另外开篇讨论一下关于OO的一些原则;后续会陆续补充完善23种设计模式。

  • 相关阅读:
    KMP算法的Next数组详解(转)
    公开封尘已久的即时通讯源码(转)
    《C语言编写 学生成绩管理系统》
    随想录(从编程语言到库、框架、软件)
    Effective Objective-C 2.0 笔记三(Literal Syntax简写语法)
    Java Swing 探索(一)LayoutManager
    Codeforces Round #FF 446 C. DZY Loves Fibonacci Numbers
    ARM体系结构与编程
    div:给div加滚动栏 div的滚动栏设置
    DS18B20
  • 原文地址:https://www.cnblogs.com/iPragmatic/p/Design-Patterns.html
Copyright © 2011-2022 走看看