【java开发设计模式篇】之简单工厂模式、工厂方法模式、观察者模式、门面模式、装饰者模式

201 阅读4分钟

前言: java开发中,设计模式是必须要懂得的知识点,也是面试必考点,由于设计模式并不是三言两语可以讲清楚的,只能一个一个来进行剖析,本章主要分享一些常用的模式,另外单例模式内容比较多,我将在另外一篇进行详细介绍单例模式。此文章仅代表鄙人的总结和理解,如有错漏,欢迎指正...

设计模式有很多种,本篇主要是作为设计模式总结性的讲解,如果想要更深入的了解,可参考以下链接进行全面性的学习 ,请点击:软件设计模式概述

简单工厂模式

总结:工厂模式就是,建立一个接口类,多个类然后实现这个接口,然后建立一个工厂类(工厂类就是调用子类的的类),专门通过这个工厂类去获取实现这个接口类的各种功能。(思路:实现类+实现类的接口+工厂类直接调用使用)

工厂方法模式

总结:简单工厂模式比较单一,如果需要拓展程序的话,就需要用到工厂方法模式,创建一个接口或者多个工厂实现类来达到增加功能的目的,而不改变原本的代码。思路:实现类+实现类的接口+工厂类+工厂类的接口

观察者模式

观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。

观察者模式是一种对象行为型模式,其主要优点如下:
1、降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。 2、目标与观察者之间建立了一套触发机制。

它的主要缺点如下:
1、目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。 2、当观察者对象很多时,通知的发布会花费很多时间,影响程序的效率。

Spring的事件机制
在Spring框架中有一个事件机制,该机制是一个观察者模式的实现。观察者模式建立一种对象与对象之间的依赖关系,当一个对象(称之为:观察目标)发生改变时将自动通知其它对象(称之为:观察者),这些观察者将做出相应的反应。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。

通过Spring事件机制可以达到如下目的:

1、应用模块之间的解耦;  
2、对同一种事件可以根据需要定义多种处理方式;  
3、对主线应用不干扰,是一个极佳的开闭原则(OCP)实践。  
4、当我们在应用中引入事件机制时需要借助Spring中以下接口或抽象类 

一个典型的Spring事件发送与监听代码如下:

1、定义事件  
2、定义监听  
3、发送消息  

门面模式(外观模式)

首先看下面的图可以看得出一些蹊跷。。。

包工头和接待员都是一个门面,通过直接跟门面打交道,不需要跟后面的打交道,更加简单。

与代理模式的区别:
这个模式乍一看还真的很像代理模式,其实还是有很大的区别的。
比如说他们都引入了中介,起到了代理的功能。但是代理模式只代理一个类,而且代理类与原类实现相同的抽象。门面类就不一样了,他代理的是一系列类,与子系统可以有不同的抽象。

装饰者模式


ok , 狐狸与小兔的本节技术分享就到这,希望学习的小伙伴能学习到东西。。。


结语:以往都是看别人的博客进行学习技术,其中不乏有精华博客也有吊儿郎当的CV大法文章,所以决定将自己所学所用所整理的知识分享给大家,主要还是想为了后浪们少走些弯路,多些正能量的博客,如有错漏,欢迎指正,仅希望大家能在我的博客中学到知识,解决到问题,那么就足够了。谢谢大家!(转载请注明原文出处)