软件设计模式概述

软件设计模式的概念和意义

概念

软件设计模式(Software Design Pattern),简称为设计模式,是一套被反复使用、普遍知晓的、经过分类编目的、代码设计经验方面的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计总结,具有一定的普遍性,可以被反复使用。目的是为了提供代码的可重用性、可读性以及可靠性。

意义

设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性、多态性以及类的关联关系和组合关系的充分理解。正确使用设计模式有以下优点:

  • 可以提高程序开发人员的思维能力、编码能力和设计能力
  • 使程序设计更加标准化、代码编写更加工程化,也使软件开发的效率大大提高,从而缩短软件的开发周期
  • 使代码具备可重用性、可读性、高灵活性、高可靠性

软件设计模式的基本要素

软件设计模式使人们可以更加简单方便地复用成功的设计和体系结构,它通常包含这几个关键的基本要素:模式名称、问题、解决方案、效果。

  • 模式名称:每一个模式都有自己的名字,可以根据模式的问题、特点、解决方案、功能和效果来命名。模式名称有助于我们理解和记忆该模式
  • 问题:描述了该模式的应用环境,即何时使用该设计模式。它解释了设计问题和问题存在的前因后果以及必须满足的一些先决条件
  • 解决方案:模式问题的解决方案包括设计的组成部分、它们之间的相互关系以及各自的职责和协作方式。由于模式就像一个模板,可以作用于多种不同的场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合来解决这个问题
  • 效果:描述了模式的应用效果以及使用该模式应该权衡的问题,即模式的优缺点。主要是对时间和空间的衡量,以及该模式对系统的灵活性、可移植性的影响,也考虑其实现问题。

正确使用设计模式

要明白一点,技术永远为业务服务,技术只是满足业务需要的一个工具。我们需要掌握每种设计模式的应用场景、特征、优缺点,以及每种设计模式的关联关系,这样就能够很好地满足日常业务的需要。
许多设计模式的功能类似,界限不是特别清楚
设计模式只是实现了七大设计原则的具体方式,套用太多设计模式只会陷入模式套路陷阱,最后代码写的凌乱不堪。
在实际工作中很少会规定必须使用哪种设计模式,这样只会限制别人。不能为了使用设计模式而去做架构,而是有了做架构的需求后,发现它符合某一类设计模式的结构,在将两者结合。
设计模式要活学活用,不要生搬硬套。想要游刃有余地使用设计模式,需要打下牢固的程序设计语言基础、夯实自己的编程思想、积累大量的时间经验、提高开发能力。目的是让程序低耦合,高复用,高内聚,易扩展,易维护

  • 需求驱动:不仅仅是功能性需求,需求驱动还包括性能和运行时的需求,如软件的可维护性和可复用性等方面。设计模式是针对软件设计的,而软件设计是针对需求的,一定不要为了使用设计模式而使用设计模式,否则可能会使设计变得复杂,使软件难以调试和维护。

  • 充分了解所使用的开发平台:设计模式大部分都是针对面向对象的软件设计,因此在理论上适合任何面向对象的语言,但随着技术的发展和编程环境的改善,设计模式的实现方式会有很大的差别。在一些平台下,某些设计模式是自然实现的。

  • 在编程中领悟模式:软件开发是一项实践工作,最直接的方法就是编程实战。

  • 避免设计过度:设计模式解决的是设计不足的问题,但同时也要避免设计过度。一定要牢记简洁原则,要知道设计模式是为了使设计简单,而不是更复杂。如果引入设计模式使得设计变得复杂,只能说我们把简单问题复杂化了,问题本身不需要设计模式。

    这里需要把握的是需求变化的程度,一定要区分需求的稳定部分和可变部分。 一个软件必然有稳定部分,这个部分就是核心业务逻辑。如果核心业务逻辑发生变化,软件就没有存在的必要,核心业务逻辑是我们需要固化的。 对于可变的部分,需要判断可能发生变化的程度来确定设计策略和设计风险。需要明白的是,设计过度与设计不足同样对项目有害。

需要明确的是,在项目应用中,设计模式从来都不是单个设计模式独立使用的。在实际应用中,通常多个设计模式混合使用,你中有我,我中有你。

7大设计原则

软件设计原则

23种设计模式

设计模式

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值