GOF设计模式



前言

设计模式这一词语对于从事软件开发者行业的猿友们来说并不陌生,基本上在工作时时常都在用到,那么在讲解具体的设计模式之间我想说一下我是怎么看待设计模式的!


一、设计模式是什么?

  官方的说法是:软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。
  但我接触设计模式后:我觉得它是一种思考问题的逻辑方法,是用于解决特定逻辑性问题的解决方案,所以它的学习难度是比较高的,需要通过不断的使用,来试错,完成最后的合理使用。

二、它的意义

  对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。
  没错它的意义就是这个,怎么说了很抽象,但是的确如此,如果想要真正的在开发者行业中能走远,我觉得开发者必须要对类的封装性、继承性和多态性这些有着充足的理解的实现手段,这对于一个真正的开发产品来说是保障其安全性、可扩展性最基础的保障。

三、软件设计模式的基本要素

最关键的元素包括以下 4 个主要部分:
  模式名称
通常用一两个词来描述,可以根据模式的问题、特点、解决方案、功能和效果来命名。
  问题
问题(Problem)描述了该模式的应用环境,即何时使用该模式。它解释了设计问题和问题存在的前因后果,以及必须满足的一系列先决条件。
  解决方案
模式问题的解决方案(Solution)包括设计的组成成分、它们之间的相互关系及各自的职责和协作方式。
  效果
描述了模式的应用效果以及使用该模式应该权衡的问题,即模式的优缺点。

四、GoF 的 23 种设计模式的分类和功能

根据目的来分:
  创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。
  结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。
  行为型模式:用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。GoF 中提供了模板方法、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录、解释器等 11 种行为型模式
我们重点看一下:单例抽象工厂代理装饰职责链观察者这六种设计模式。

五、OCP七大原则

  1. 开闭原则
      对扩展开发,对修改关闭
  2. 里氏替换原则
      继承必须确保超类所拥有的性质在子类中仍然成立
  3. 依赖倒置原则
      要面向接口编程,不要面向实现编程
  4. 单一职责原则
      控制类的粒度大小、将对象解耦、提高其内聚性
  5. 接口隔离原则
      要为各个类建立它们需要的专用接口
  6. 迪米特法则
      只与你的直接朋友交谈,不跟“陌生人”说话
  7. 合成复用原则
      尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

这7大原则是我们在开发程序的时候严格遵照的原则,是一个好的开发程序的基本要求和保障。当然并不是一定要完全遵循所有原则,因为确实蛮难的,我觉得没有个五六年开发经验,根本没法完成。当然并不绝对,毕竟天才也不少。


总结

软件设计模式是多年以来无数前辈们总结出来的经验,对编程有着非常重要的作用,能避免我们这些才刚入行的猿友们在开发时出现过多的错误。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值