java设计模式7.策略模式模板方法模式观察者模式

Essay      2022-04-17     634

关键词:

  • 策略模式

策略模式的用意,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。

  • 环境角色:持有一个抽象策略角色的引用。
  • 抽象策略角色:给出所有的具体策略类所要实现的接口。
  • 具体策略角色:包装相关的算法或行为。

 

  • 模板方法模式

模板方法的用意,使用一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以用不同的方式来实现这些抽象方法。

  • 抽象模板角色:1. 定义一个或多个抽象操作,以便让子类实现。这些操作叫做基本操作,它们是一个顶级逻辑的组成步骤。2. 定义一个模板方法,给出一个顶级逻辑的骨架,逻辑的组成步骤在对应的抽象操作中,推迟到子类中实现。
  • 具体模板角色:实现父类定义的所有抽象方法,它们是一个顶级逻辑的组成步骤。

 

  • 观察者模式

观察者模式又叫监听模式或者发布-订阅模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象(主题对象中会维护一个观察者对象的集合),使它们能够自动更新自己

  • 抽象被观察角色:主题角色把所有对观察者对象的引用保存在一个聚集中,另外提供接口,以便增加和删除观察者对象。
  • 抽象观察者角色:为所有的具体观察者定义一个接口,在得到主题通知时更新自己。
  • 具体被观察角色:将有关状态存入具体观察者对象,在具体主题状态改变时,给所有观察者发出通知。
  • 具体观察者角色:实现抽象观察者要求的接口。

 

  • 示例:servlet

Java的Servlet提供了J2EE技术的Web构建的基础,它提供了Servlet、JSP和EJB等架构。所有的Servlet必须遵循Java Servlet API,这个API由两个库及一系列类组成:

  • javax.Servlet:提供普通的Servlet模型。
  • javax.Servlet.http:提供HTTP和HTTPS的Servlet模型。

普通Servlet模型只是假定协议是建立在TCP/IP之上的,并没有对请求-回答的协议作出任何具体的假设,所有与HTTP和HTTPS有关的逻辑均在javax.Servlet.http库中,这种办法可以在最大程度上把可能发生变化的部分与一般性逻辑分开。

Servlet库中有三个类提供了Servlet主要的技术架构,分别是Servlet接口、GenericServlet类和HttpServlet类

  • Servlet接口声明了三个方法:init();destory(); 以及service();这三个方法决定了Servlet的生命周期。
  • GenericServlet是一个抽象类:它提供了Servlet接口的默认实现,但是留下了一个service()方法由具体的Servlet类实现。
  • HttpServlet继承自GenericServlet,本身也是抽象类,但是它为所有方法提供了默认实现,包括service();doGet();doHead();doPost();doPut();doDelete();doOption();doTracle()。

Servlet的生命周期由接口javax.Servlet.Servlet所定义,所有的Servlet必须在一个Servlet引擎所提供的容器环境里运行,因此必须直接或间接地实现Servlet接口,才能在Servlet容器环境里运行,并且由容器管理它的生命周期:加载-初始化-就绪-销毁


模板方法模式的应用:HttpServlet的service()方法。

观察者模式的应用:

Servlet引擎的事件可以分成Servlet环境事件和Session事件,通过Servlet引擎的事件机制可以做如下工作:

  • 管理数据库和各种资源的使用及释放。
  • 建立计数机制。
  • 监听HTTP Session的状态及属性。

Servlet环境事件:

Session事件:

 

上述两种事件机制涉及到4个监听器接口,它们都是java.util.EventListener(标记接口)的子接口。web容器在启动时会初始化一个全局对象ServletContext时,ServletContext提供add和remove接口来管理Listener。所以当上下文环境发生变化时,可以通知所有的Listener作出相应的动作。

 #笔记内容参考《java与模式》

javadesignpatterns

 java的设计模式大体上分为三大类:创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元... 查看详情

设计模式

java的设计模式大体上分为三大类:创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式... 查看详情

设计模式总结

1)单一职责原则32)里氏替换原则3)依赖倒转原则54)接口隔离原则5)迪米特法则116)开闭原则4创建型模式,共五种:工厂方法模式8抽象工厂模式1(简单工厂模式)15单例模式21建造者模式13原型模式9结构型模式,共七种:适配器模式1... 查看详情

java设计模式

一直不是很了解设计模式,也不知道如何使用。现在慢慢一点一点了解。创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式结构型模式:适配器模式、装饰者模式、代理模式、外观模式、桥接模式、... 查看详情

策略模式(strategy)

  行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式    策略模式(Strategy)    策略模式定义了一系列算法... 查看详情

设计模式-模板方法模式(15)(代码片段)

 行为型模式(BehavioralPattern)是对不同的对象之间划分责任和算法的抽象化。行为型模式包括11种模式:模板方法模式、命令模式、责任链模式、策略模式、迭代器模式、中介者模式、观察者模式、备忘录模式、访问者模式... 查看详情

java设计模式随笔

 大家都知道Java23种设计模式,大神总结如下:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组... 查看详情

23种设计模式分类

创建型模式~5种抽象工厂模式工厂方法建造者模式原型模式单态模式结构型模式~7种适配器模式桥接模式 组合模式 外观模式 装饰者模式享元模式 代理模式 行为型模式~11种责任链模式命令模式 解释器模式... 查看详情

软件设计模式

软件设计模式大致能够分为三类。共23种。创建型模式:单例模式,抽象工厂模式。建造者模式,工厂模式。原型模式。结构型模式:适配器模式,桥接模式,装饰模式。组合模式,外观模式,享元模式。代理模式。行为型模式... 查看详情

24种设计模式的简单理解

1.简单工厂模式2.工厂方法模式3.抽象工厂模式4.建造者模式5.原型模式6.单例模式7.适配器模式8.桥接模式9.组合模式10.装饰模式11.外观模式12.享元模式13.代理模式14.职责链模式15.命令模式16.解释器模式17.迭代器模式18.中介者模式19.... 查看详情

java设计模式学习笔记

设计模式分为3大类型共23种:创建型:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型:策... 查看详情

java经典设计模式:五大创建型模式

一、概况总体来说设计模式分为三大类:(1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。(2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、... 查看详情

设计模式——建造者模式

分类设计模式总体划分为三大类:创建型模式:工厂模式,抽象工厂模式,单例模式,建造者模式,原型模式模式,共5种。结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,共7中... 查看详情

命令模式

命令模式标签:Java与设计模式在对象的结构和创建问题都解决了之后,就剩下对象的行为问题了:如果对象的行为设计的好,那么对象的行为就会更清晰,它们之间的协作效率就会提高.行为型模式共有11个可供研究,它们分别是:命令... 查看详情

设计模式概述(23种设计模式目录)

设计模式概述:总体来说基本的23种设计模式分为三大类创建型模式(5种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式... 查看详情

23种设计模式uml类图图解(代码片段)

目录一、类图的表示二、创建者模式1、单例模式2、简单工厂模式3、工厂方法模式4、抽象工厂模式5、原型模式6、建造者模式三、结构型模式1、代理模式2、适配器模式3、装饰者模式4、桥接模式5、外观模式6、组合模式7、享元... 查看详情

23种设计模式uml类图图解(代码片段)

目录一、类图的表示二、创建者模式1、单例模式2、简单工厂模式3、工厂方法模式4、抽象工厂模式5、原型模式6、建造者模式三、结构型模式1、代理模式2、适配器模式3、装饰者模式4、桥接模式5、外观模式6、组合模式7、享元... 查看详情

java中23种设计模式(附代码样例)

一、设计模式分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组... 查看详情