Template模式

Template模式顾名思义是提供了一种模板,也就是针对某种业务提供了模范框架。这个在spring中是属于核心模式的,因为其ApplicationContext抽象类就是模板模式的终极体现。

Template模式一般情况下是指针对某种业务算法(或者业务动作)形成的固定模式。而且它是基于继承的一种实现。由父类类完成模板方法,仅留出模板方法中的特别处理方法作为抽象方法,交由子类根据具体情况来实现。

对于具体使用,要引用一下《Expert》中的一句话“Publicsuperclass methods are usually final: the abstract methods deferredto subclasses are protected. ”正如这句话前面的一段所描述的,父类控制整个业务流,而将不能确定一些具体实现延迟给子类实现。刚这句话是借用java的基本属性来强制这种实现方式。父类中定义的工作流方法应该用publicfinal关键字,而抽象方法应该用protectedabstract 关键字。

通过Template模式,还实现了子类对父类的反向依赖。这样就由原来上层类依赖具体实现的情况,变成了子类依赖父类的具体逻辑,对于业务的实现主体都是在父类中完成的。

Strategy模式

策略是指在某种状况下,应该出手的套路。这包含了两个方面,一是固定的策略模板,一是具体实现。Strategy模式正是这样来实现的,它提供了一个具有策略模板的接口,具体业务系统仅依赖这个接口,而这也是依赖反转的一个具体例子。为何是依赖反转呢?因为业务具体依赖接口,而具体的策略实现也是依赖接口。那么如果按照我们直观的做法,可能就是由业务系统直接依赖某个具体实现。

命令模式,模板模式和策略模式都是《设计模式》中的行为性模式。《敏捷》就是把Template和Strategy放在一起来描述的。

周末公司培训,好多东西要消化,反倒是把blog放下了两天,心里很不痛快。

这次写的并不多,但从动手写这些东西,心里就不断有想法涌现。以前看过的书,真还需要多看几遍,是切切实实地留在自己的记忆力,融到自己的代码中。可惜以前总是将那么多好资料束之高阁。

在写这些笔记的时候,也一直在考虑应该怎样去描述,画一个清晰的类图,太懒了,因为在《Design Patterns》中有很多好的类图,关系图。而现在自己写下来的是自己的理解。

Dive into Spring framework -- 了解基本原理(二)--设计模式-part2的更多相关文章

  1. Dive into Spring framework -- 了解基本原理(二)--设计模式-part1

    比较巧,自己在接触设计模式的时候,也刚开始学习spring,但可惜的是,真的仅仅在学习“用”spring,每天都沉浸在会痛快的完成spring各种配置的快乐之中,但对成长无用.其实当初就清楚,spri ...

  2. Dive into Spring framework -- 了解基本原理(一)

    在继续我们的分析之前,推荐各位静心来读一下<<Expert_OneOne_J2EE_Design_and_Development>> 第四章, 正如spring BeanFac ...

  3. Dive into Spring framework -- 搭建spring 源码的开发环境

    spring是一个类之间依赖的管理容器,大家都知道,但我们中很多人都仅仅停留在使用的层面,但spring本身具有极大的研究价值,所以在使用了几年spring之后,还是想深入的探究一下其根源.记录于此, ...

  4. Spring Boot 启动(二) 配置详解

    Spring Boot 启动(二) 配置详解 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring Boot 配置 ...

  5. Spring Framework简介

    作者关于此主题早期文章 Spring框架快速入门 起源 要谈Spring的历史,就要先谈J2EE.J2EE应用程序的广泛实现是在1999年和2000年开始的,它的出现带来了诸如事务管理之类的核心中间层 ...

  6. 设计模式学习(二十四):Spring 中使用到的设计模式

    设计模式学习(二十四):Spring 中使用到的设计模式 作者:Grey 原文地址: 博客园:设计模式学习(二十四):Spring 中使用到的设计模式 CSDN:设计模式学习(二十四):Spring ...

  7. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(二)

    接前一篇 Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 本篇主要内容:Spring Type Conver ...

  8. 框架应用:Spring framework (一) - IoC技术

    IoC概念以及目标 IoC就是让原本你自己管理的对象交由容器来进行管理,其主要的目的是松耦合. IoC发展史 既然IoC的目标是为了松耦合,那它怎么做到的? 最后目标:降低对象之间的耦合度,IoC技术 ...

  9. Spring Framework(框架)整体架构 变迁

    Spring Framework(框架)整体架构 2018年04月24日 11:16:41 阅读数:1444 标签: Spring框架架构 更多 个人分类: Spring框架   版权声明:本文为博主 ...

随机推荐

  1. django-luffycity-购物车接口

    一  基本功能 -添加购物车 -详见代码 -修改课程价格策略 -put或者patch {"course_id": "1", "policy_id&qu ...

  2. Hadoop的Combiner

    在很多MapReduce应用的场景中,假设能在向reducer分发mapper结果之前做一下"本地化Reduce".一wordcount为样例,假设作业处理中的文件单词中" ...

  3. shell_02

    if判断: if [$? -eq 0];then echo "xxxxxxxxxxx" else echo "xxxxxxxxxxxxx" fi case判断: ...

  4. (0.2.3)Mysql安装——二进制安装

    Linux平台下二进制方式安装卸载mysql 本章节:二进制安装mysql 目录: 1.基于Linux平台的Mysql项目场景介绍 2.mysql数据库运行环境准备-最优配置 3.如何下载mysql数 ...

  5. Art of Android Develop. Activity的生命周期和启动模式。

    1.  onCreate() ,  onRestart(),  onStart(),  onResume(),  onPause(),  onStop(),  onDestroy() 2.

  6. PAT 1116 Come on! Let's C [简单]

    1116 Come on! Let's C (20 分) "Let's C" is a popular and fun programming contest hosted by ...

  7. 在eclipse添加第一次添加Python项目时,提示: Project interpreter not specified

    按图片操作,添加Python的路径,就能解决该问题

  8. Numpy包简单介绍

    详细介绍可以看Numpy帮助,也有很多资料,此文仅是一个简述性质的集成文章 1.简介 Numpy是Python的一个扩展包,语法和Matlab有很多相似之处.它支持高维数组和矩阵运算,也提供了许多数组 ...

  9. SqlAlchemy 中操作数据库时session和scoped_session的区别(源码分析)

    原生session: from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from sqlalch ...

  10. SHUOJ - 算法题1 矩阵连乘问题(区间dp)

    链接:http://acmoj.shu.edu.cn/problem/24/ 分析:设\(dp[i][j]\)为矩阵\(A[i:j]\)所需的最少乘法次数,则有dp方程:\(dp[i][j]=min\ ...