设计模式是什么(对设计模式的理解)


什么是设计模式

面向对象的设计是比较困难的,一个设计应该是具有针对性的且对于未来有一定通用性,先找到相关的对象在以适当的粒度对它们归类,在对每个类定义接口和继承层次,最后确定每个对象之间的联系。有经验的设计者的确可以做出好的设计,但是对于不那么熟练的设计者在面对众多的选择时会感到无法下手。而且不是所有的问题都需要从头开始解决,有些时候会使用之前使用过的解决方案,就像代码的复用一样,每当找到一个好的方案时会一遍又一遍的使用,这些一遍又一遍使用的方案能够解决特定的问题,使设计更加灵活优雅。 这些方案帮助设计者将新的设计建立在以往的工作基础上,复用以往的各种设计, 这就体现了设计经验的重要性,所以设计模式是一种经验能够使新手更加简单的使用前人的经验和方案。而将这些经验转换为能够被人们有效利用的形式,这个形式就是模式。将以证实的技术大范围的使用,会使新的开发者理解其设计思路且帮助开发者做出有利于系统复用的选择,避免设计损害了系统复用性。 通过提供一个显示类和对象作用的关系以及它们之间的潜在联系的说明规范,设计模式能够提高已有系统的文档管理和系统维护的有效性,可以帮助设计者更快更好的完成系统设计。 每一个模式描述了不断重复发生的问题以及该问题的解决方案的核心,可以避免重复劳动,就像一句在这个行业流行的话“Stop Trying to Reinvent the Wheel”(不要重复造轮子)。

每一个模式有四个基本元素: 1.模式名称:一个助记名,它用一两个词来描述模式的问题、解决方案和效果,帮助思考和便于交流设计思想。 2.问题:描述了在何时使用模式,解释了设计问题和问题的前因后果,可能描述了特定的设计问题,如怎样用对象表示算法。 3.解决方案:描述了设计的组成成分,之间的相互关系及各自的职责和协作方式,模式可应用于不同的场合,所以解决方案并不描述一个特定而具体的设计和实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合来解决这个问题。 4.效果:描述了模术应用的效果及使用模式应权衡,对于评价设计选择和理解使用设计模式的代价及好处具有重要意义,大多关注时间和空间的衡量,所以模式效果一定包括对系统的灵活性,扩充性,或可移植性的影响。

总共有23个设计模式,这些设计的许多对象来源于现实世界的分析模型,但是得到的类通常在现实世界是不存在的,模式引入了统一对待现实世界中不存在对象的抽象方法,所以设计中的抽象对于产生灵活的设计是至关重要的,将系统分解为对象的集合,因为要考虑许多因素:封装、粒度、依赖关系、灵活性、性能、演化、复用等等,这些都影响着系统的分解,并且一般时候这些元素还是互相冲突的。

Design Patterns顾名思义就是设计过程中可以反复使用的、可以解决问题的设计方法,这23种设计模式共分为三大类创建、行为、结构,设计模式能教会开发者提前判断代码写法的优劣以及对未来代码的一个预期和规划,是一种解决问题的思维而非是某种方法,这个思维是前辈在针对各种问题的时候对症下药总结出来的,设计模式就是多种武功模式,武功都讲无招胜有招,而码代码达到高境界就是一句内功心法:低耦合,高内聚。

总结一下,设计模式是针对特定上下文的特定问题的解决方案,这种解决方案被抽象化、模版化、就是设计模式,学习设计模式的关键是理解,理解方法理解思想理解观念,然后忘记这些模版自然的使用你具有的这些观念,灵活运用远大于套用工具和方法的生搬硬套,但是不是为了使用设计模式而,设计的根本是为了可复用、可拓展、高性能,不是一味使用设计模式就能达到,一定要结合实际环境的去考虑整个问题。

    原文作者:ZytheMoon
    原文地址: https://blog.csdn.net/ZytheMoon/article/details/78653987
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞