zoukankan      html  css  js  c++  java
  • 00-00设计模式(DesignPattern)

    关于什么是设计模式(DesignPattern)网上一大堆的介绍,这里就不在赘述了,其实我想告诉你的就是,设计模式(DesignPattern)是由四个人合作总结提出的,然后业界给他们起了一个带号叫GOF也就是gang of four的缩写,翻译过来就是四人帮的意思,但是我喜欢叫他们四大金钢,如下照片:

    他们分别是Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides,关于他们的介绍你可以参考谷歌的搜索。

    前面的废话已经说完了,接下来我就说一下本次分享的笔记为了三个大的模块:
    1、学习设计模式的七大原则
    我们在学习设计模式原则前,先简单说一下使用设计模式的目的,但是在说目的前,我们来想一下,为什么要有这么多的设计模式呢?是因为在编写软件过程中,程序员面临着怎么去解决耦合性,要怎么去提高内聚性,以及让我们的软件能够具有更好的可维护性,可扩展性,重用性,灵活性等多方面的问题,那么设计模式就是要解决这些问题。换言之使用了设计模式,我们的程序就应该松耦合,高内聚以及提高程序的维护性、扩展性、重用性、灵活性。那么问题来了,我们设计模式是为了解决前面提到的这些问题,那么问题就是设计模式为什么要这样去设计呢?他遵循原则是什么?比如说工厂模式,他为什么要这样去设计呢?这里面就涉及到我们设计模式本身需要遵守的七个原则就是设计模式为什么这样设计的依据 ):
    (1)单一职责原则
    (2)接口隔离原则
    (3)依赖倒转(倒置)原则
    (4)里氏替换原则
    (5)开闭原则
    (6)迪米特法则
    (7)合成复用原则

    2、UML类图学习
    画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理。那UML图有那些呢?,如下UML图分类:
    (1) 用例图(usecase)
    (2)静态结构图:类图、对象图、包图、组件图、部署图。
    (3)动态行为图:交互图(时序图与协作图)、状态图、活动图。
    对于开发人员来说,最重要的就是类图。类图是描述类与类之间的关系,是UML图中最核心的。在讲解设计模式时,我们必然会使用类图,为了后面能够把设计模式学到位,需要先学习类图。UML类图用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。那么类之间的关系有如下几种:
    (1)依赖(Dependence)
    (2)泛化(继承)
    (3)实现
    (4)关联
    (5)聚合
    (6)组合

    3、23种设计模式
    23种设计模式网上一大堆介绍,这里就不多说了,但是我想说的是在《设计模式》这本书把23种设计模式分为三种类型,这三种类型,如下:
    (1)创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。
      从创建型模式这个名字上,我们就应该能感应到,是关于对象在创建时应该去怎么设计,强调的是对象的创建时候,我们应该怎么去设计我们的代码,他分了上面的五种模式,其实抽象工厂模式和工厂模式都是属于工厂模式的,单例模式就是解决怎么让一个系统里面只能有某个类的实例只能有一个,原型模式他是解决的我们怎么去克隆一个对象,是深拷贝,还是浅拷贝。
    (2)结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
      结构型模式有上面七种模式,他是站在软件的结构的角度来思考的,怎么让我们软件的结构更加有伸缩性,弹性或者说扩展性比较好。比如说使用装饰模式就能解决类爆炸的问题,导致有很多的类无法管理等问题。
    (3)行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式、策略模式、职责链模式(责任链模式)。
      行为型模式,行为主要是站在方法的角度去思考与设计的,比如说模版方法模式是考虑怎么去设计这个方法与调用更合理。

    4、最后
    本学习内容基于韩顺平老师 《图解Java设计模式》整理与记录,非常感谢韩老师的资源分享,当然在学习的过程中也结合自己理解加以描述部分内容。如果你需要转载请说出原文出处,个人总结有不足之处请留言指出稍候修正,当然也欢迎大家一起探讨,欢迎你加入996.ICU……

  • 相关阅读:
    从远程仓库拉去的代码开发后用git推送到另外一个远程仓库
    Git回退本地和远程分支的的版本
    把win10本地hexo博客部署到腾讯云linux服务器
    linux安装mysql
    linux部署nginx
    apache服务器安装到linux
    SqlServerv报错:从数据类型 varchar 转换为 numeric 时出错。
    IDEA2020版Maven依赖成功导入但任然报错找不到包解决方案
    idea中左侧project栏自动隐藏如何解决
    拖延的坏处
  • 原文地址:https://www.cnblogs.com/pickrecalled/p/14100466.html
Copyright © 2011-2022 走看看