设计模式 之 概述

    设计模式的概念最早是由一名建筑师提出来的。他试图在图纸上用一种结构化、可重用化的方法,获得建筑的基本要素,从而能够将很多其它的精力放在详细建筑物和城镇的设计上。逐渐的,这样的思想在软件领域流行起来,并获得发展。

设计模式(Design pattern)是一套被重复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更easy被他人理解、保证代码可靠性。

设计模式是计算机软件领域比較抽象的内容。设计模式带给我们的是:使我们从复杂、烦乱的代码中解脱出来,让软件系统变得更加稳定、更加易于扩展,维护更加轻松。

为什么须要设计模式

    设计模式的应用。不管对个人、企业、还是社会都有百利而无一害的。首先。它能够提升个人的编程能力、思维能力和设计能力。极大提高工作效率。让个人获得更大发展空间。其次。对于企业,应用设计模式可使软件产品质量得到保证,系统稳定性大大提升,为企业创造出很多其它的利润上升空间;最后,个人和企业都在不断地发展壮大,自然会创造出很多其它的社会价值。为社会作出很多其它的贡献。因此,我们须要设计模式、企业须要设计模式、社会也须要设计模式。设计模式或将成为改变一个人职场命运、一个企业成败关键、甚至一个社会
经济发展的重要因素。

软件设计遵循的基本原则

1、单一职责原则(Single Responsibility Principle,简称SRP)

单一职责原则。就一个类而言。应该仅有一个引起它变化的原因。假设一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者抑制这个类完毕其它职责的能力。这样的耦合会导致脆弱的设计。当变化发生时,设计会遭受到意想不到的破坏。

而软件设计真正要做的很多内容。就是发现职责,并把这些职责相互分离。

2、 开放--封闭原则(The Open-Closed Principle,简称OCP)

开放--封闭原则。是说软件实体(类、模块、函数等等)应该能够扩展。可是不能够改动。即对于扩展是开放的,对于更改是封闭的。 我们不可能做到未卜先知,在设计的时候尽可能让一个类足够好,设计好了就不要去改动了;不能全然封闭的情况下,当发生变化时,我们就创建抽象来隔离以后发生的同类变化。

3、依赖倒转原则(Dependence Inversion Principle )

依赖倒转原则。指高层模块不应该依赖低层模块,两个都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。说白了就是要针对接口编程,不要对实现编程。举个样例:计算机硬件中。假设内存坏了,那么仅仅须要换一个内存条就能够了,而不须要去换一个主板,在这里内存是一个接口类,仅仅要符合他的规格要求即可,不管是那一根。

4、里氏代换原则(Liskov Substitution Principle,简称LSP)

里氏代换原则,子类型必须可以替换掉他们的父类型。在软件里面,把父类都替换成其子类。程序的行为不会发生变化。

正是因为子类型的可替换性才使得使用父类型的模块在无需改动的情况下就行扩展。

5、迪米特法则(Law of Demeter)

迪米特法则,假设两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。假设当中一个类须要调用还有一个类的某一个方法时,能够通过第三者转发这个调用。类之间的耦合越弱,就越有利于复用。一个处在弱耦合的类被改动,不会对有关系的类造成波及。 主要是强调了类之间的松耦合。

6、合成/聚合复用原则(Composition/Aggregation Principle]。简称CARP)

合成聚合复用原则。尽量使用合成/聚合,尽量不使用类继承。

合成聚合是“has  a”的关系,而继承是“is  a”的关系。因为继承是一中强耦合的结构,父类变。子类必变。所以不是“is  a”关系,我们一般不要用继承。

优先使用合成聚合复用原则,有助于保持每一个类的封装。减少继承的层次。

设计模式的分类

依照范围来分。设计模式能够分为类模式和对象模式。

    类模式用来处理类和子类之间的关系。这些关系通过几成建立,是静态的,在编译时刻便确定下来;

    对象模式是处理对象间的关系,这些关系在执行时是能够变化的,更具动态性。

依照目的来分,设计模式能够分为创建型模式、结构型模式和行为型模式。

    创建型模式用来处理对象的创建过程。

    包含工厂方法(Factory Method)

        抽象工厂(Abstract Factory)

        建造者(Builder)

        原型(Prototype)

        单例(Singleton)

    结构型模式用来处理类或者对象的组合;

    包含适配器(Adapter)

        桥接(Bridge)

        组合(Composite)

        装饰者(Decorator)

        外观(Facade)

        享元(Flyweight)

        代理(Proxy)

    行为型模式用来对类或对象如何交互和如何分配职责进行描写叙述。

    包含责任链(Chain of Responsibility)

        命令(Command)

        解释器(Interpreter)

        迭代器(Iterator Pattern)

        中介者(Mediator)

        备忘录(Memento)

        观察者(Observer)

        状态(State)

        策略(Strategy)

        模板方法(Template Method)

        訪问者(Visitor)

设计模式是前人实践经验的总结。是经过千锤百炼的思想结晶。我们学习设计模式不是真正的目的,我们真正的目的是学习这样的思想,并在实践其中详细应用。而且学会归纳和总结,让我们的思维活跃起来,不再拘泥于计算机编码,而是上升到一定的理论空间。让理论指导实践,实践充实理论,这样就会形成一种良性循环。不断提升自己的理论、实践能力,从而实现个人最大的社会价值。

时间: 2024-10-10 05:26:58

设计模式 之 概述的相关文章

软件设计模式简单概述

常见23种模式概述: 1) 抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 2) 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的类可以一起工作. 3) 桥梁模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化. 4) 建造模式(Builder):将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示. 5) 责任

设计模式——1.概述&UML类图和时序图

声明:设计模式相关文章均整理修改自网络,原文地址:图说设计模式 学习设计模式的3个层次—— 1.熟悉所有设计模式: 2.能够用代码实现: 3.运用到工作的项目中. 设计模式指导软件开发,学习设计模式首先需要了解相关UML图,下面将对UML类图做相关介绍. 重点需要明白,类图中各个类之间的关系,各个类之间线条.箭头的含义. 应该能将类图所表达的含义和最终的代码对应起来. 一.从一个示例开始 请看下面的类图,类之间的关系是我们需要关注的: 1.车的类图结构为<<abstract>>,表

23种设计模式的概述

总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 其实还有两类:并发型模式和线程池模式.下面用表格的方式进行详细的说明(其中加粗的是用的比较多的): 目的  范   围 创建型模式 结构型模

GOF设计模式_概述

10.Abstract Fcatory 提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类. 11. Adapter 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原来由于接口不兼容而不能在一起工作的那些类可以一起工作. 12.Bridge 将抽象部分与它的实现部分分离,使它们都可以独立地变化 13.Builder 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 14.Chain of Responsibility 为解除请求的发

【设计模式】概述

设计模式概念 引用<设计模式-可复用的面相对像设计>对模式的定义是这样的:[Christopher Alexander 说过: “每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复劳动”, 尽管Alexander所指的是城市和建筑模式,但他的思想也同样适用于面向对象设计模式,只是在面向对象的解决方案里,我们用对象和接口代替了墙壁和门窗.两类模式的核心都在于提供了相关问题的解决方案.] 通俗的讲设计模式就是解决一类问题的解

设计模式的概述

资料链接:http://blog.csdn.net/lovelion/article/details/7420863    模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案    设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式是为了可重用代码.让代码更容易被他人理解并且保证代码可靠性.    设计模式的用途:          (1)设计模式来源众多专家的经验和智慧,它们是从许多优秀的软件系统中总结出的成功的.能够实现可维护性复用的设

java设计模式:概述与GoF的23种设计模式

软件设计模式的产生背景 设计模式这个术语最初并不是出现在软件设计中,而是被用于建筑领域的设计中. 1977 年,美国著名建筑大师.加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作<建筑模式语言:城镇.建筑.构造(A Pattern Language: Towns Building Construction)中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇.邻里.住宅.花园和房间等进行设计的基本模式. 1979 年他

[Design Pattern] 设计模式0_概述1

什么是设计模式 设计模式是前人对编程的总结. 在所谓前人栽树,后人乘凉,学习前人踩过的坑是提高自己编程实力的一个好途径. 为什么要学习设计模式 原因大致如下: * 让自己写出更加高内聚,松耦合的代码 * 让自己开发出"可维护,可拓展"的代码 * 让自己以后快速入门一个API * 学习Spring的必备前置技能 如何学习设计模式 学习设计模式不可避免必然是知道现在主流设计模式的来源和种类. 现在主流的设计模式有23种,来源于GOF. GoF是其实书籍<Design Patterns

java常见的几种设计模式

设计模式 1.概述 1)设计模式(Design pattern):是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结: 2)分类: 创建型模式(创建对象的): 单例模式.抽象工厂模式.建造者模式.工厂模式.原型模式. 行为型模式(对象的功能): 适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式. 结构型模式(对象的组成): 模版方法模式.命令模式.迭代器模式.观察者模式.中介者模式.备忘录模式.解释器模式.状态模式.策略模式.职责链模式.访问者模式. 2.简