随笔分类 - 设计模式
摘要:简述 简单工厂模式,通过一个方法获取需要的Bean。如果一个工厂方法可获取不同的类,那么可通过入参判断,入参也许为字符串、数字或者枚举。 简单的例子 最简单的就是通过流程判断来确定获取哪个类的实例。 如果日后需增加或减少生成的类,需对流程判断进行修改容易出错,那么通过设置好的映射生成指定类。这里的映
阅读全文
摘要:简述 适配器模式,目的是将A对象通过适配、转换的方式转换成B对象来使用,为什么转换为B对象?因为用户通过依赖B对象来使用。 适配器的实现有两种方式。 继承实现 组合实现 基于Java单继承的机制,组合实现的方式更为常见、灵活。 Reader、InputStream之间的适配,字符流、字节流之间的适配
阅读全文
摘要:简述 装饰器模式,可以通过装饰器类,通过依赖原实现的方式(不使用继承),达到扩展原实现的目的。UML图如下: ServletRequestWrapper于其中的使用 ServletRequestWrapper是ServletRequest接口的简单实现,开发者可以继承ServletRequestWr
阅读全文
摘要:简单工厂模式 顾名思义,此模式的设计结构是简单的,核心是生产对象。 一般来说,运用工厂模式生产的对象应该是构建对象的过程比较复杂的,获取构建对象的过程在日后可能发生变更的。 简单工厂模式,在工厂类中直接生产对象,即工厂类中直接依赖对象类。 代码见: https://github.com/niccha
阅读全文
摘要:外观模式(Facade),为系统中复杂的类(或子系统)提供简单地访问外观类。 随着系统日渐庞大,业务日渐复杂,某些代码调用起来不一定人人都得心应手,所以,我们经常会为较复杂的类或子系统,提供简单的调用这些业务的类,这样就不知不觉地使用了外观模式。
阅读全文
摘要:责任链模式,是处理对象将请求沿着一条链,找到能处理此请求的对象。 责任链模式的例子 下面以数据从数据库取还是从缓存中取为例,代码描述责任链的样子。 全部责任者的父类,继承者实现抽象方法。 责任者之一:数据库。编号为1 9的文章由此责任者读取。 import java.util.HashMap; im
阅读全文
摘要:今天介绍的是模板方法模式~ 模板方法模式,由父类定制总体的框架,具体的细节由子类实现。 一般来说,模板方法中有3类方法: 抽象方法,父类声明方法待子类具体实现。比如例子的validate、save、update方法。 模板方法,编写总体的框架,调用其他方法实现业务,一般无须被子类重写。比如例子的sa
阅读全文
摘要:参考的优秀文章: 设计模式之—观察者模式 《JAVA与模式》之观察者模式 假设,Pay是指收入,Tax是指个人所得税,SocialSecurity是社保,而后两者是以Pay为基数计算所得的。 所以,Tax、SocialSecurity依赖于Pay,Pay一旦变动,其他两者也随之变动。 > 没使用观察
阅读全文
摘要:上周代码评审,看到同事使用了“享元模式”。想起自己也不懂,着手学习之。 参考的优秀的文章: Java的享元模式 这篇博文为学习之理解、感悟,如理解不真确,请慷慨指出。 本文只讨论单纯享元模式。 Flyweight,是享元模式的意思。同时,其亦是最轻量级摔跤手、轻量级的意思。我想应该是“最轻量级摔跤手
阅读全文
摘要:当我们需要在一个方法之前或之后添加一段逻辑时,自然会想到使用代理类。代理类帮我们代理了实际类的调用,然后可以在实际调用之前和之后添加一些逻辑,从而不浸入实际类。 拓展:由于代理类能在实际类调用之前和之后添加逻辑,那么可做的事情就多了,常见的有4种,用AOP的术语描述就是: 前置增强:在实际方法前添加
阅读全文
摘要:单例模式 单例模式,是常见的设计模式之一,一般来说,是开发人员较早接触的模式之一。嘻嘻,包括我~~~ 分类 一般来说,分两种: 饿汉模式。非常饿嘛,一开始就加载了,如果这个资源在以后的运行中没有用到,又加载了这个资源,就显得浪费了,所以资源利用率不高。 懒汉模式。非常懒嘛,能不加载就不加载了,到实际
阅读全文