专栏首页凯哥Java设计模式讲解-第1篇初识设计模式
原创

设计模式讲解-第1篇初识设计模式

设计模式讲解-初识设计模式

设计模式是什么?

    设计模式是人们在面对同类型软件工程设计问题所总结出的一些有用的经验(是前辈们对代码开发经验的总结,是解决特定问题的一系列套路)。设计模式不是代码,而是某类问题的通用设计解决方案。让我想起了:世上本无路,走的人多了,也便成了路。

百科介绍:

23种设计模式总结者:

Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides于1995年总结写了《设计模式》。

学习设计模式最好的方式:在你的设计和以往的工程里面寻找何处可以使用它们。

设计模式的本质目的是使软件工程在维护性、扩展性、变化性、复杂度方面成O(N)。

设计模式可以分为三类:

一:创建型模式

二:结构型模式

三:行为型模式

三类模式各包含具体哪些模式?如下图:

设计模式之间关系,如下图:

思考个问题:

其实Java种的IO流类设计使用的就是装饰者模式。至于优点,在装饰者模式中,我们详细讲解

题外话:

设计模式的几大原则

1:开闭原则

2:里氏代换原则(LSP)

3:依赖倒转原则

4:接口隔离原则

5:迪米特法则(知道最少原则)

6:合成复用原则

7:单一职责原则

本文出自凯哥Java(kaigejava)

从上面七大原则上,我们就可以看出,其实设计模式就是一个软件的设计思想,从大型软件架构出发,为例升级和维护方便的。所有,我们会经常听到低耦合,高内聚。这也就是spring的一个特点。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深入理解Java虚拟机---学习感悟以及笔记

    虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box...

    用户5224393
  • 牺牲时间换取更少的空间,牺牲空间换取更快的时间!

    我们都知道,遍历一个list(列表)有两种方式,一种是直接输出list的对象,还有一种是使用for去迭代。这两者的区别,我将从时间和空间两方面来考虑,为了明显一...

    不可言诉的深渊
  • 魔法方法(2)

    在学习面向对象程序设计时,我们通常会学到存取方法,它们是名称类似于getHeight和setHeight的方法,用于获取和设置属性(这些属性可能是私有的)。如果...

    不可言诉的深渊
  • 【DL4J速成】Deeplearning4j图像分类从模型自定义到测试

    今天说Deeplearning4j(DL4J),本文所用到的数据,代码请参考我们官方git

    用户1508658
  • 使用Python爬虫获取游民福利

    在这里,我选的网站是许多游戏玩家,许多游戏开发者都浏览过的网站——游民星空(https://www.gamersky.com/)浏览器打开这个网站之后,点击娱乐...

    不可言诉的深渊
  • Python设计模式(10):迭代器模式

    在面向对象的软件设计中,如果一个系统有比较复杂的数据结构,客户程序往往没有必要详细地知道其内部的实现。为了使用方便,该系统应该提供给客户程序一种遍历方法。该遍历...

    不可言诉的深渊
  • Python 设计模式(5):单例模式

    在软件设计中,有时确实存在一个类仅能用来产生一个唯一对象的必要性,例如,一个大公司的打印室虽然可以有多台打印机,但是其打印管理系统中只有一个打印任务控制对象,该...

    不可言诉的深渊
  • 【chainer速成】chainer图像分类从模型自定义到测试

    chainer是一个基于python的深度学习框架,能够轻松直观地编写复杂的神经网络架构。

    用户1508658
  • 高级爬虫实践|记录一次自动登录淘宝网站 By Java

    接上一篇文章(PHP高级爬虫实践|记一次失败的淘宝自动登录尝试),猿哥尝试了很多种方式(包括切换浏览器和编程语言),暂时放弃使用 Facebook 的 PHP ...

    猿哥
  • Python 模块:itertools

    在某些情况下,我们通常需要对序列进行一些复杂的操作,比如从序列中选出一部分元素做排列,组合,笛卡尔积等。如果自己实现这个操作未免太繁琐了,而且还会占用大量的空间...

    不可言诉的深渊

扫码关注云+社区

领取腾讯云代金券