`
jiasanshou
  • 浏览: 15991 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

设计模式是什么

阅读更多

什么是设计模式

设计模式有甚多不同的表述:

设计模式是一种对问题本质的通用解决方案。

从设计或重构的角度来讲:

设计模式是对软件中可变性封装的通用的框架(可变性是软件中容易变化的部分)。

软件设计的目标是可扩展性,可插入性,灵活性。

可扩展性:新的功能可以很容易的加入到系统中去。

可插入性:可以很容易的将一个类抽出去,同时将另外一个有同样接口的类加入进来。

灵活性:可以允许平稳的修改代码,而不会涉及到很多的其他模块。

软件中不可避免的含有很多可变性,为了实现软件设计的目标,必然要对可变性做封装。

如何对这种可变性做封装呢?

封装必须遵照一定的原则:

1,一种可变性不应当散落在代码的很多地方,而应当被封装在一个对象里面。

同一种可变性的不同表象意味着同一个继承等级结构中的不同子类!

2.一种可变性不应当与另外一种可变性混合在一起。

基于这2个原则,任何人都可以在自己的系统中封装可变性,但是封装的好坏见仁见智。

但是一个良好的封装应当遵守6个原则。

设计模式6大原则

开闭原则:

一个软件应当对扩展开放,对修改关闭。

里氏代换原则:

任何基类出现的地方,子类一定可以出现。

依赖倒转原则:

要依赖于抽象,不要依赖于实现。开闭原则是目标,依赖倒转原则是实现开闭原则的手段。

合成/聚合复用原则:

要尽量使用合成/聚合,而不是继承关系达到复用的目的。

迪米特法则:

一个实体(事物在软件中的抽象,比如一个Person类表示一个人,也是一个实体)应当尽可能少的与其他实体相互作用。

接口隔离原则:

应当提供单独的专业的接口而不是大而全的总接口。

以下是各个原则对应的体现的比较明显的设计模式:

开闭原则-策略模式

里氏代换原则-代理模式,策略模式

依赖倒转原则-工厂方法模式,模板方法模式

接口隔离原则-备忘录模式(服务定制)

合成/聚合复用原则-代理模式等

迪米特法则-门面模式,调停者模式

 

21种设计模式归为三大类,创建模式,结构模式,行为模式

创建模式

创建模式是对类的实例化过程的抽象化。是对实例创建可变性的封装。

一些系统在创建对象时,需要动态决定怎么创建对象,创建那些对象,如何组合和表示这些对象。

创建模式描述了怎样构造和封装这些动态的决定。

创建模式分为类的创建模式和对象的创建模式2种。

主要的设计模式有:简单工厂模式,工厂方法模式,抽象工厂模式,单利模式,多例模式,建造模式,原型模式。

结构模式

描述如何将类或者对象结合在一起形成更大的结构。是对类或对象之间的组合可变性的封装。

分为类的结构模式和对象的结构模式2种。

主要有:适配器模式,缺省适配模式,合成模式,装饰模式,代理模式,享元模式,门面模式,桥梁模式。

行为模式

是对不同的对象之间责任划分和算法的抽象化。即是对责任划分过程或算法的可变性的封装。

分为类的行为模式和对象的行为模式

类的行为模式使用继承关系在几个类之间分配行为或责任。

对象的行为模式则使用对象的聚合来分配行为或责任。

主要有:不变模式,策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,解释器模式,调停者模式。

 

 

学习设计模式的时候一定要问自己一个问题:

这个设计模式封装了什么可变性(这个设计模式允许那个部分变化),为了封装这个可变性付出了什么代价?

 

 

 

分享到:
评论

相关推荐

    研磨设计模式-陈臣.epub

    “1.1 设计模式是什么 1.1.1 什么是模式 从字面上理解,模,就是模型、模板的意思;式,就是方式、方法的意思。综合起来,所谓模式就是:可以作为模型或模板的方式或方法。再简单点说就是可以用来作为样板的方式...

    使用设计模式改善程序结构

    仅知道设计模式是什么, 以及它是如何实现的是很不够的,因为那样就不能使你对于设计模式有真正的理解,也就不能够在自己的设 计中正确、恰当的使用设计模式。本文试图从另一个角度(设计模式的意图、动机)来看待...

    c++语言实现的23种设计模式.pdf

    文档中包含有23种设计模式,基本上包含了所有的常用的设计模式;...我个人最开始接触设计模式也是从改书开始的,以前不知道设计模式是什么,看过之后才觉得太有用了,代码设计,类设计,不会再一如既往的杂乱无章。

    MVC设计模式了解什么是mvc

    怎样使用mvc建立mvc的设计模式思想,了解mvc 设计模式

    如何向妻子解释设计模式

    在此文中,作者依旧通过与妻子浅显易懂的对话,向读者解释了什么是设计模式。 设计模式是什么? Shubho:通过我们关于面向对象设计原则(OODP,即SOLID原则)的对话,我想你已经对面向对象设计原则(OODP)有了基本的...

    Java 经典设计模式讲解以及项目实战

    Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...

    C_设计模式(23种设计模式)

    C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计...

    设计模式精解 设计模式精解

    设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式 设计模式精解设计模式精解设计模式精解...

    Java设计模式 设计模式介绍

    章节介绍:1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之...

    设计模式课程设计

    设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式设计模式

    DAO设计模式DAO设计模式

    DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式DAO设计模式

    24种设计模式以及混合设计模式

    24中设计模式 混合设计模式 设计模式实际应用案例 费了很多时间和精力整理的

    C#设计模式_C#设计模式_

    C# 设计模式.pdf 文档。无论您是新手,还是老手,本教程都值得一读。对于那些具有丰富的开发经验的开发人员,学习设计模式有助于了解在软件开发过程中所面临的问题的最佳解决方案;对于那些经验不足的开发人员,学习...

    设计模式 四人帮设计模式

    设计模式 四人帮设计模式。比较经典的设计模式。

    Gof设计模式设计模式设计模式PDF

    学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料

    DAO设计模式 DAO 设计模式 JAVA设计模式

    DAO设计模式 DAO 设计模式 JAVA设计模

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。 设计模式体现的是一种思想,而思想则是指导行为的一切,理解和掌握了设计模式,并不...

    您的设计模式,我们的设计模式 java设计模式

    您的设计模式我们的设计模式,简单明了的设计模式是设计模式学习必备的书籍

    人人都懂设计模式 人人都懂设计模式

    人人都懂设计模式 人人都懂设计模式

    java中的23种设计模式简述

    Java中23种设计模式简述 设计模式是什么 为什么要使用设计模式 设计模式在使用(设计)时的原则 如何看懂设计模式(uml类图)

Global site tag (gtag.js) - Google Analytics