什么是设计模式(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、具体产品与客户端剥离,责任分割