其他模式

前言

设计模式概括的讲很多资料写的项目的有23种设计模式,但是实际上设计模式都比较简单。有些时候有些模式一直都在用,直到详细看了那么设计模式才了解原来这也算是一个设计模式,比如模板方法模式。有些设计模式也比较简单,有些则实际用的不多。我也没撒东西拿出来当读讲。所以这片文档做一个统称。

毕竟当我们深刻了解所有的设计模式后,可以发现这已经和代码没有任何关系了。一切都是看业务看需求。看我们是不是能够深刻的抓住业务的主体。抓住其中痛点以及编码的痛点。同时当别人想对我们的代码进行扩充时也能够在不修改源代码的情况下进行自主扩充。

毕竟我们要抓住其本质:开闭原则。对扩展开放,对修改闭合。

模板方法模式

模板方法:通常我们在类中定义一个操作的骨干架子,将一些不确定的量交给子类去实现。子类可以通过扩展的方式来功能。

优点以及特点:

  1. 封装了不可变部分,将扩展部分交给子类去实现,父类中也可以提取公共代码,提高代码的复用率
  2. 符合开闭原则

缺点:

  1. 扩展部分交给子类实现会导致子类增多。系统比较臃肿
  2. 在查看代码逻辑时,是一种反向控制结构,提高代码的阅读难度(Spring常有…)

享元模式

享元模式是将某些大量使用的都对象,由于具有相同性,所有可以对象进行提前缓存。达到共享元数据的概念(有点缓存的概率)。

比如Integer.valueOf(int i)中将-128~128之间的数据进行缓存,因为JVM任务这些小整数,使用频率比较高!

比如String的常量池,也可以说是享元模式

装饰模式

说到装饰模式首先想到的是IO,因为IO就是装饰者模式的一种使用。

装饰模式是在主对象的主体结构不变化的情况,对其进行扩充。使其更加好用。

比如IO中常用的:BufferedInputStream、BufferedReader都是对InputStream和Reader的装饰类