什么是设计模式(Design Pattern)【思想方面,前人经验】

在软件项目的高级面向对象设计中,常常会使用设计模式。所谓设计模式,是指在软件开发环境中对通用问题的通用解决方案。

是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,其目的是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

设计模式有哪些?

软件模式多达上百种,主要分为以下类型:

  • 设计模式——在软件项目设计阶段使用的模式,用于解决设计问题。

  例如常见的单例模式、迭代器模式等均属于设计模式。每个设计模式通常使用UML类图表示。

  • 架构模式——在软件项目架构阶段使用的模式,用于解决系统和子系统的架构问题。

  例如常见的MVC模式、发行-订阅模式(广泛应用于不同系统,例如短信、微信、QQ等)等,均属于架构模式。每个架构模式通常使用UML组件图或部署图表示。

  • Java EE模式——在Java EE企业项目架构阶段使用的模式,用于构造良好的设计结构。

  例如常见的FC模式、DAO模式等,均属于Java EE模式。每个Java EE模式通常使用UML组件图来表示。

 GOF(Gang of Four,四人组)模式是最流行的设计模式。GOF设计模式起源于上世纪80年代,因其良好的设计思想和广泛的适用性,被业界奉为经典。

GOF设计模式有23种:

  单例模式

  抽象工厂模式

  建造者模式

  工厂模式

  原型模式

  ......

这些模式被分为三组:

  • 行为型模式——描述对象间如何交互及分担职责
  • 创建型模式——提供更健壮的方式来创建对象
  • 结构型模式——讨论如何将各对象联系到一起

什么是单例模式?

皇帝,独一无二,一山难容二虎

有些对象我们只需要一个,比如:

  配置文件、工具类、线程池、缓存、日志对象等

如果创造出多个实例,会导致许多问题,如占用过多资源,不一致的结果等

单例模式:保证整个应用中某个实例有且只有一个

懒汉模式  饿汉模式

什么是工厂模式?

工厂模式概念:

  实例化对象,用工厂方法代替new操作。

  工厂模式包括工厂方法模式和抽象工厂模式。

  抽象工厂模式是工厂方法模式的扩展。

工厂模式的意图:

  定义一个接口来创建对象,但是让子类来决定哪些类需要被实例化。

  工厂方法把实例化的工作推迟到子类中去实现。

 什么情况下是和工厂模式?

  有一组类似的对象需要创建

  在编码时不能预见需要创建哪种类的实例

  系统需要考虑扩展性,不应依赖于产品类实例如何被创建、组合和表达的细节

项目中的现状:

  在软件系统中经常面临着“对象”的创建工作,由于需求的变化,这个对象可能随之也会发生变化,但它却拥有比较稳定的接口。

  为此,我们需要提供一种封装机制来隔离出这个易变对象的变化,从而保持系统中其他依赖该对象不随着需求变化而变化。

基于项目现状将代码进行如下设计:

  1、尽量松耦合,一个对象的依赖对象的变化与本身无关

  2、具体产品与客户端剥离,责任分割