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

设计模式是什么

阅读更多

什么是设计模式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

设计模式6大原则

开闭原则:

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

里氏代换原则:

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

依赖倒转原则:

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

合成/聚合复用原则:

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

迪米特法则:

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

接口隔离原则:

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

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

开闭原则-策略模式

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

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

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

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

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

 

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

创建模式

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

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

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

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

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

结构模式

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

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

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

行为模式

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

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

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

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

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

 

 

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

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

 

 

 

分享到:
评论

相关推荐

    研磨设计模式-陈臣.epub

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

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

    人人都懂设计模式 设计模式是软件开发中的一种解决方案,它提供了一种通用的设计思想和方法论,可以帮助开发者更好地设计和实现软件系统。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 在本书中...

    Head First 设计模式 +Java设计模式(第2版)

    《Head First 设计模式》与《Java设计模式(第2版)》是两本非常重要的IT书籍,专注于软件开发中的设计模式。设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码...

    GOF设计模式中英文+设计模式精解中英文

    GOF(Gang of Four)设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位专家在他们的著作《设计模式:可复用面向对象软件的基础》中提出,被誉为设计模式的经典之作。本资源包含了GOF设计...

    设计模式之蝉

    在计算机科学领域,设计模式是软件工程中用于解决特定问题的一般性方案,它们是经过实践检验的最佳实践。这些模式被广泛应用于面向对象软件设计中,能够提高代码的可重用性、灵活性和可维护性。设计模式通常被划分为...

    23种设计模式详解PDF

    设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): 工厂方法模式 、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...

    设计模式(包含5个设计模式)含源代码报告.rar

    这个压缩包文件"设计模式(包含5个设计模式)含源代码报告.rar"显然是一份宝贵的资源,它涵盖了五个核心的设计模式,并附带了详细的类图、源代码以及文档报告,这对于学习和理解设计模式至关重要。 首先,我们要探讨...

    python设计模式第2版.pdf

    设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计已经逐渐成为软件开发和维护过程中的一个重要课题。 Python设计模式(第2版)通过11章内容,全面揭示有关设计模式的内容,并结合Python语言进行示例...

    设计模式 四人帮设计模式

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

    新版设计模式手册 - C#设计模式(第二版)

    《新版设计模式手册 - C#设计模式(第二版)》是一部深入探讨C#编程中设计模式的权威指南,尤其适合已经有一定C#基础并希望提升软件设计能力的开发者阅读。设计模式是解决软件开发中常见问题的经验总结,是软件工程的...

    基于Java的设计模式大作业绘图系统【六种设计模式+文档】.zip

    本系统基于六种设计模式,运用到的设计模式有备忘录模式,简单工厂模式,迭代器模式,状态模式,模版方法模式,单例模式。 具体实现过程、UML类图以及实现效果详见如下项目说明地址: ... 该系统为绘图系统,该系统通过...

    设计模式课件大全

    设计模式02 设计模式03-创建型模式 设计模式04-创建型模式2 设计模式05-建造者、原型模式 设计模式06-适配器、桥接、组合模式 设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、...

    JAVA设计模式chm文档

    设计模式之Factory 设计模式之Prototype(原型) 设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计...

    六种微服务架构的设计模式.pdf

    在这篇文章中,我们将探讨六种常见的微服务架构设计模式:聚合器微服务设计模式、代理微服务设计模式、链式微服务设计模式、分支微服务设计模式、数据共享微服务设计模式和异步消息传递微服务设计模式。 聚合器...

    软件设计模式期末作业

    在软件开发领域,设计模式是经过时间和实践验证的解决方案模板,用于解决常见问题。本作业以“软件设计模式”为主题,特别关注了装饰模式、工厂模式和适配器模式的运用。这三种模式都是面向对象设计的核心部分,它们...

    设计模式与游戏完美开发

    设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏完美开发 设计模式与游戏...

    您的设计模式.pdf。

    "设计模式" 在软件开发中,设计模式是一种解决特定问题的通用方法。它可以帮助开发者编写更加灵活、可维护、可扩展的代码。本书《您的设计模式》对设计模式进行了详细的讲解,涵盖了策略模式、代理模式、单例模式、...

    JavaScript设计模式与开发实践.pdf

    在本书中,作者还分享了自己在设计模式方面的研究和实践经验,包括设计模式的原型、设计模式的分类、设计模式的应用等,并提供了一些常见的设计模式的示例代码,帮助读者更好地理解和掌握设计模式。 《JavaScript...

    设计模式练习题

    有关设计模式的练习题。设计模式的分类。等相关的联系。学西设计模式必选习题。有助于加强对于设计模式的理解。

    MongoDB应用设计模式

    资源名称:MongoDB应用设计模式内容简介:无论是在构建社交媒体网站,还是在开发一个仅在内部使用的企业应用程序,《MongoDB应用设计模式》展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计...

Global site tag (gtag.js) - Google Analytics