zoukankan      html  css  js  c++  java
  • java设计模式 01 开山篇

    一、 设计模式概述

    模式:从字面上理解,模,就是模型,模板的意思。式,就是方式,方法的意思。所谓模式就是可以作为模型或模板的方式或方法。

    设计模式(Design pattern):是指在软件开发过程中,经过验证的,用于解决在特定环境下、重复出现、特定问题的解决方案。

    使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

    二、设计模式的基本要素 

    1.模式名称: 必须有一个简单,有意义的名字,用来描述模式的问题、解决方案和效果。

    2.问题 :描述在何时使用模式。

    3.解决方案: 描述设计的组成部分以及如何解决问题。

    4.效果 :描述模式的效果以及优缺点。

     

    三、GoF的23种设计模式
    创建型模式:工厂方法模式,抽象工厂模式,建造者模式,原型模式,单例模式。(5个)
    结构型模式:外观模式、适配器模式、代理模式、装饰模式、桥接模式、组合模式、享元模式。(7个)
    行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。(11个)

      创建型模式: 对象的创建

      结构型模式: 对象的组成(结构)

      行为型模式: 对象的行为


    四、架构、框架的概念
    设计模式是啥,上面已经说过了。接下来我们谈谈架构、框架是什么。
       架构:架构就是系统的一个草图,是一种设计方案,将客户的不同需求抽象成为抽象组件,描述这些抽象组件之间的通信和调用以及层次划分。

      比如web的三层架构(3-tier architecture):一种软件设计架构思想。

     框架:软件框架(Framework)是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。框架的作用:框架不是现成可用的应用系统。而是一个半成品,提供了诸多服务,开发人员进行二次开发,实现具体功能的应用系统。使得新项目代码不需要从头编写,只需要在框架的基础上进行一些开发和调整即可满足需求。

    五、设计模式、架构、框架的比较

     1、框架与架构关系

           框架不是架构,应该说框架比架构更具体,更偏重于技术,而架构偏重于设计。还有就是架构可以通过多种框架来实现。

    2、  框架与设计模式关系

           设计模式研究的是针对单一问题的设计思路和解决方法,一个模式可应用于不同的框架和被不同的语言所实现;而框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体。虽然它们有所不同,但却共同致力于使人们的设计可以被重用,在思想上存在着统一性的特点,因而设计模式的思想可以在框架设计中进行应用。

    3、    架构与设计模式关系

           两者的关系也是很好区分的,设计模式主要是针对单一问题的解决方法,范畴比较小,而架构是高层次的针对体系结构的一种设计思路,范畴比较大。可以这么说,一个架构中可能会出现多个框架和多个设计模式;

    六、总结

     

      通过上面的分析,我们能够知道他们之间的区别还是有很多,首先架构应该是一个范畴最大的概念,是最高层次的设计。一个架构设计中可能会用到多个框架和多个设计模式;而框架是针对共性抽象出来的半成品,这里面可能包含着多个设计模式;而设计模式就是解决单一问题的设计思路和解决方法。

           因此当我们在做一个项目的时候首先设计出来的应该是架构,是对整个问题的一个总体上的设计,之后再会考虑运用什么样的框架和设计模式来实现我们的架构;当然,只使用框架和设计模式中的一种也是经常遇到的。

           他们三者的共同点都是解决现实生活中的问题而出现的,而且在架构设计和框架设计还有设计模式中都会表现出来的就是“高内聚,低耦合”的理念;所以他们的共同点就是让我们的设计更面向对象化。

           总而言之,我们要想做好一个好的项目,那么架构设计、框架设计和使用、设计模式是非常重要的。

  • 相关阅读:
    疫情环境下的网络学习笔记 python 5.8 数据库入门终章
    疫情环境下的网络学习笔记 python 5.7 navicat数据库,例题,sql注入
    疫情环境下的网络学习笔记 python 5.6 暂时看看
    疫情环境下的网络学习笔记 python 5.5 MYSql 表关系,外键
    疫情环境下的网络学习笔记 python 5.4 数据库基础
    疫情环境下的网络学习笔记 python 4.30 初识数据库
    疫情环境下的网络学习笔记 python 4.29 网络小项目
    XJOI 夏令营501-511测试11 游戏
    XJOI 夏令营501-511测试11 统计方案
    CF1197D Yet Another Subarray Problem
  • 原文地址:https://www.cnblogs.com/sunTin/p/6659570.html
Copyright © 2011-2022 走看看