随笔分类 - 设计模式
摘要:一、Spring 中观察者模式的四个角色 1. 事件(ApplicationEvent) ApplicationEvent 是所有事件对象的父类。ApplicationEvent 继承自 jdk 的 EventObject, 所有的事件都需要继承 ApplicationEvent, 并且通过 sou
阅读全文
摘要:一、剩下的模式 1、桥接模式(Bridge Pattern) 概念:不只改变你的实现,也改变你的抽象。桥接模式的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。 角色: 1. 实现类接口(Im
阅读全文
摘要:一、概念 代理模式:为另一个对象提供一个替身或占位符已控制对这个对象的访问,管理访问的方式有许多种。 角色: 1、Subject:主题接口,为 RealSubject 和 Proxy 提供了接口。通过实现同一接口,Proxy 在 RealSubject 出现的地方的取代它。
阅读全文
摘要:一、概念 状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。这个模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,我们知道行为会随着内部状态而改变。 一个对象“看起来好像修改了它的类”是什么意思呢?从客户的视角来看:如果说你使用的对象能够完全改变它的行为,那么你
阅读全文
摘要:一、概念 组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 组合包含组件。组件有两种:组合和叶节点元素。组合持有一群孩子,这些孩子可以是别的组合或者叶节点元素。 角色: 组合部件(Component):它是一个抽象角色,
阅读全文
摘要:一、概念 模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 解析:模板方法模式用来创建一个算法的模板。什么是模板?模板就是一个方法。更具体地说,这个方法将算法定义成一组步骤,其中的任何步骤都可以是抽象的,
阅读全文
摘要:一、适配器模式 1、概念 定义:将一个类的接口,转换成客户期望的另一个类的接口,适配器让原本接口不兼容的类可以合作无间。 安卓转Type C头,就是一个典型的适配器模式。在安卓头和 Type C 之间引入适配器,安卓头是被适配者。 解析: 1、 客户(Client)通过目标接
阅读全文
摘要:一、概念 命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 角色: 1、命令(Command):为所有命令声明了一个接口。调用命令对象的 execute()方法,就可以让接收者进行相关的操作。这个接口也具备一个 undo()
阅读全文
摘要:一、概念 工厂方法模式:用来封装对象的创建。工厂方法模式(Factory Method Pattern)通过让 子类 决定该创建的对象是什么,来达到将对象创建的过程封装的目的。这样,关于超类的代码和子类创建对象的代码之间就解耦了。 抽象工厂模式(Abstract Factory Pattern):提
阅读全文
摘要:一、概念 继承的缺点:类数量爆炸、设计死板以及基类加入的新功能可能并不适用于所有的子类。 装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。一言以蔽之 —— 动态扩展类的行为。 角色: 1、抽象组件(Component):给出一个抽象类
阅读全文
摘要:一、概念 观察者模式:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 观察者模式四个角色: 1、抽象主题:定义对观察者管理的接口,包括 订阅、取消订阅、通知接口。 2、具体主题:把所有观察者对象的引用保存在一个聚集(比如Ar
阅读全文
摘要:网上介绍设计模式的文章有很多,好文也不少。作为设计模式的初学者,实在不敢多加造次。就仅以此文作为我记忆的备忘录吧! 设计模式的三要素:可复用、可维护、可扩展。 一、介绍 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略
阅读全文