认识观察者模式 我们用报纸和杂志的订阅为例来介绍: 报社的业务就是出版报纸. 向某家报社订阅报纸,只要他们有新报纸出版,就会给你送来.只要你是他们的订户,你就会一直收到新报纸. 当你不想再看报纸的时候,取消订阅,他们就不会再送新报纸来. 只要报社还在运营,就会一直有人(或单位)向他们订阅报纸或取消订阅报纸. 出版者+订阅者=观察者模式,如果了解报纸的订阅,就知道观察者模式是怎么回事,只是名称不太一样:出版者改为“主题”(Subject),订阅者改为“观察者”(Observer). 定义观察者模式…
1. Java自带的实现 类图 /** * 观察目标 继承自 java.util.Observable * @author stone * */ public class UpdateObservable extends Observable { private int data; public UpdateObservable(Observer observer) { addObserver(observer); /* * add other observer */ } public int…
jsp学习笔记:mvc开发模式2017-10-12 22:17:33 model(javabe)与view层交互 view(视图层,html.jsp) controller(控制层,处理用户提交的信息)与model层交互 MVC是一种分层结构的设计思想,不是现成的方法,在不同的开发环境下有不同的实现手段.其中: ①“M”(Model)为模型层,通常主要负责数据库模型的建立: ②“V”(View)为视图层,主要负责界面的显示和与用户的交互操作: ③“C”(Controller)为控制层,主要负责业…
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 正文开始... 1. 简介 简单工厂模式不属于GoF23中设计模式之一,但在软件开发中应用也较为频繁,通常做为学习其他工厂模式的入门. 接下来我们从一个虚构的业务场景遇到的问题开始,到如何使用简单工厂模式去解决这个业务场景的问题的角度,来介绍这个模式. 2. 具体业务 有一个图表类,可以在实例化的时候根据传入的参数创建不同的图表类型,比如柱状图.饼状图.折线图等等. 2.1 业务代码 /**…
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 简介 上一篇博客介绍了简单工厂模式,简单工厂模式存在一个很严重的问题: 就是当系统需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,这将违背"开闭原则". 本篇将要介绍的工厂方法模式可以规避这个缺点. 2. 工厂方法模式 工厂方法模式又简称为工厂模式,又可称作虚拟构造器模式或多态工厂模式.工厂方法模式是一种创建型模式. 2.1…
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 抽象工厂模式概述 工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题, 但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销. 此时,我们可以考虑将一些相关的产品组成一个"产品族",由同一个工厂来统一生产.这就是抽象工厂模式的基本思想. 2. 模拟业务 开发一套界面皮肤库,用户在使用时可以通过菜单来选择皮肤…
一. 概述 Observer 模式要解决的问题为:建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候,依赖这个“一”的多也能够同步改变. Sbuject 相当于通知者,它提供依赖于它的观察者Observer 的注册(Attach)和注销(Detach)操作,并且提供了使得依赖于它的所有观察者同步的操作(Notify). Observer 相当于观察者,则提供一个Update操作,注意这里的 Observer 的 Update 操作并不在Observer 改…
观察者模式又叫做发布-订阅模式(Publish.Subscribe)模式.模型-视图模式(Model/View)模式.源-监听器模式(Source/Listener)模式或从属者(Dependents)模式. 观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题对象.这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己. 1.  观察者模式结构 一个简单的观察者模型如下: 角色: 抽象(Subject)主题角色:把所有的观察者维持在一个集合中,每个主题都可…
观察者模式定义对象的一种一对多的依赖关系.当一个对象的状态发生改变时.全部依赖于它的对象都会得到通知并被自己主动更新. 一个简单的样例是.在星际争霸的虫族中有一个0基础单位叫做跳狗(Zergling),玩家能够在研究中心为它升级"肾上腺素",升级之后,跳狗的攻击速度会翻倍.在这个模型中,我们能够看出.全部的跳狗都依赖于研究中心,当研究中心研究出肾上腺素后,通知每个跳狗单位,它们被迫进行自我更新--升级速度加倍.在观察者模型中.我们称研究中心为目标(Subject),而跳狗为观察者(Ob…
装饰者模式是JDK中还有一个使用较多的设计模式,上一个是观察者模式(在Swing中大量使用),业内好的API设计无一离不开常见的设计模式,通常我们所说要阅读源代码,也是为了学习大牛们的设计思路.----题记 设计模式 观察者模式:定义了对象之间一对多的依赖,这样一来,当一个对象改变状态时.它的全部依赖者都会受到通知并自己主动更新. 装饰者模式:动态地将责任附加到对象上. 若要扩展功能.装饰者提供比继承者更有弹性的替代方案. 设计原则 (1)封装变化. (2)多用组合,少用继承. (3)针对接口编…