设计模式学习
说明:由于本人是一个初学者,所以博客中用到的一些见解、图片、代码或者说明可能引用网络上面的资源,如果涉及到了侵权的问题请大家联系我进行删除。
ps: 作为一个初学者,我的一些看法和见解可能存在偏差甚至是错误,欢迎大家提出批评指正。
本人是一个设计模式小白,在接下来一段时间里面将会进行设计模式的学习,希望大家共同学习,共同进步!
设计模式和算法的区别
说到设计模式,首先我们来说一下设计模式和算法的区别:
设计模式通常是把再开发中经常用到的程序进行抽象形成一种框架(所谓框架通俗一点理解就是开发了一半的半成品,以方便你在这个半成品的基础上实现属于自己的成品),便于以后类似情况时候的使用,是设计简化,这也体现了设计模式最重要的一个特性就是复用性;
算法是某一种计算方式的抽象,通常是为了得到某一结果而进行的,而得到这个结果可能有很多途径,每一种途径可能都可以抽象成一种算法。
设计模式的分类
根据其目的(模式是用来做什么的)可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三种:
• 创建型模式主要用于创建对象。
• 结构型模式主要用于处理类或对象的组合。
• 行为型模式主要用于描述对类或对象怎样交互和怎样分配职责。
根据范围(模式主要是用于处理类之间关系还是处理对象之间的关系)可分为类模式和对象模式两种:
•类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是属于静态的。
•对象模式处理对象间的关系,这些关系在运行时刻变化,更具动态性,这些关系通常是通过组合来进行建立的。
设计模式的使用场景
- 我们所谓的设计模式其实是面向对象设计模式,而且是“好的面向对象的设计模式”,所谓“好的”,就是指那些可以“应对变化,提高复用”的设计模式。
- 现代软件设计的特点是“需求的频繁变化”,在这种背景下,设计模式的使用就显得尤为重要,设计模式的要求是“寻找变化点,然后在变化点处运用设计模式,从而来更好的适应需求的变化”。所以说,“什么时候、什么地方应用设计模式”比“理解设计模式结构本身”更重要。
综上所述: 设计模式存在的意义是为了适应需求的变化以及提高代码的复用性,从而降低软件开发的难度。
重构
重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
重构是设计模式的实现基础以及实现目的,也就是说,我们通过重构来获得设计模式,同时我们通过重构来使用设计模式。
其中,重构有几个技巧:
- 静态 --> 动态
- 早绑定 --> 晚绑定
- 继承 --> 组合
- 编译时依赖 --> 运行时依赖
- 紧耦合 --> 松耦合
其实经过思考可以得出结论:以上说的这些技巧其实在本质上说的是同一件事情。