设计模式

前言

写关于这一系列的文章主要是对自己这段时间学习设计模式的总结,并希望能够通过写文章的形式来加深对于设计模式的理解。以前接触学习设计模式都是通过网络上的博客一篇一篇的学习,没有系统的学习所有的设计模式,因此对于设计模式总是一知半解的。这里想通过一系列完整关于设计模式文章,减少大家查阅相关知识的时间,加深对设计模式的理解。

学习设计模式时主要是要掌握设计的思想,理解这么设计背后的原因,只有掌握了设计模式的思想这样子才能在开发过程中使用得当。本系列文章会争取采用通俗易懂方式来表达,并会带有实际案例,来减少理解吸收成本。

谁适合读这一系列文章呢?

  1. 有一定的java开发经验(因为我是基于Java语言来写的)。
  2. 你想学习基础,想学习设计模式,以及这些设计模式上所遵守的OO设计原则。
  3. 想扩展自己的代码设计能力的。

什么是设计模式?

设计模式(Design pattern)描述了在我们周围不断重复发生的问题,以及解决该问题解决方案的核心。

设计模式是开发人员这么多年的开发过程中面对一般问题的总结出来的通用解决方案,这些设计的方式方法是许许多多的开发人员通过不断的试错、总结出来的。但是得提醒一句设计也不是万能,不能啥都用设计模式这样容易,不然容易增加代码的复杂度。

设计模式可以有好几种的分类方式,最广为人知的分类方式是根据模式的目的进行分类,分别为:创建型行为型结构型

创建型:涉及到对象的实例化,这类模式都会提供一个方法,将客户与要实例化的对象解藕。
行为型:涉及类和对象如何交互,职责的分配。
结构型:设计一套结构把类和对象组合进去

具体的分类如下图:
在这里插入图片描述

为什么要使用设计模式?

共享词汇:可以减少你和你的团队的沟通成本
设计合理:模式是经过时间考验的可以保证其设计的合理性
可扩展性:一般都会遵守OO设计原则,保证代码的可扩展性
低耦合性:可以降低客户与结构的耦合

什么时候使用设计模式?

这是一个非常重要的问题:何时使用设计模式?在进行设计时,面对一个问题,如果你有两种方案1:利用设计模式;2:更简单的解决方案;这时你应该要优先选择更简单的解决方案。进行一个需求的设计时,你的目标是要尽可能的采用简单的解决方案,而不是想尽各种办法使用模式,因为使用模式是会带来一些副作用,增加代码的复杂度,加大对要接手的开发人员理解难度。

如果你能够保持简单的设计,降低代码复杂度,减少理解成本,那么你会得到其他的开发人员欣赏和尊敬。只有在没有更简单的解决方案才开始使用设计模式来解决。但是在使用设计模式时一定要对该设计模式有深刻的理解,要清楚你所使用的设计模式所带来的后果,以及对其他部分的影响。只有在一切分析都很合理的情况下,那么你就可以愉快的使用设计模式了。

怎么使用设计模式?

在选择一种设计模式时,建议购买《设计模式-可复用面向对象软件的基础》这本书,当作设计模式的类目,当你需要使用设计模式时可以通过查阅类目给你一些知道方向,避免出现走弯路的情况。
首先对一个设计模式有一个大概的想法,知道这个设计模式是什么。

  1. 然后查找类目,参考“动机”和“适用性”小节的,确认想法没有错误。
  2. 浏览类目关于该模式的“结果”,确认使用该设计模式会带来什么样子的后果。
  3. 浏览类目中“结构”小节,了解类图,看每个类的作用。
  4. 如果还是不知道怎么使用,可以继续浏览“实现/范例代码”小节。

总结

对于设计模式我的理解是不要拘泥于概念,要真正的掌握其内在的思想,并且平常要多实践,多应用,做到融会贯通。平常看一些开源框架的源码时,多注意看看代码中是否使用设计模式,从而加深对设计模式的理解。最后在强调一遍设计模式不能滥用,考虑全面了在使用。

个人公众号:基石分享社

欢迎关注我的公众号,该公众号会持续输出Android开发过程中的各种基础知识的文章。当然也包括设计模式系列文章。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值