互联网轻量级框架SSM-查缺补漏第二天
简言:第一天没咋看,因为看的时候已经是下午了。今天上午也因为工作上的事没咋看,本来想按照天去写的,但是内容会太散吧。我决定把整块的内容放在一起写了。天数啥的,就那样把。
还有,我只是言简意赅的去总结一下知识点,而不是全面的介绍。
第二章 Java设计模式
2.1Java反射技术
反射机制之前我特意去看了一次,觉得当时看的还是挺细的,基本没发现看不懂的地方,这里也就不写了。我之前也写过一个随笔,写的不是很全,但是有些东西不需要都写在纸上。
2.2动态代理模式和责任链模式
动态代理模式的意义在于生成一个占位(代理对象),来代理真实对象,从而控制真实对象的访问。
为什么要设置代理?作用在于:在对真实对象进行访问之前或之后,要加入对应的逻辑,或者根据其他规则控制是否使用真实对象。
书上介绍了JDK动态代理和CGLIB动态代理,我就不介绍了,搜索一下有很多易懂的例子,主要还是设计模式的思想。
拦截器:
拦截器接口的设计室给开发者使用的,开发者只要知道拦截器接口的方法、含义和作用即可,不需要知道动态代理是怎么实现的。
注:这个例子我写了一部分代码,所以不结合我这本书不一定能看懂,还是不要看了。但是例子的意义可以了解下。
例如:定义拦截器接口Interceptor,包含三个方法,before,around,after。
public boolean before(Object proxy,Object target,Method method,Object[] args){
//作为一个逻辑判断,书上的例子返回false
System.out.print("反射方法前逻辑");
return false;
}
public void after(Object proxy,Object target,Method method,Object[] args){
System.out.print("反射方法后逻辑");
}
public void around(Object proxy,Object target,Method method,Object[] args){
//在before方法返回false时执行
System.out.print("取代了被代理对象的方法");
}
接口会作为参数传入动态代理中,然后把动态代理中的对应参数传入interceptor的对应方法中。
这个例子的意义就是用interceptor的before方法控制了是否要反射原有对象,before返回true时,反射原有对象,false是执行around方法,最后都统一执行after。
总结:
设计者把拦截器接口暴露给开发者使用,让动态代理的逻辑在开发者的视野中“消失”。拦截器的作用是进一步简化动态代理的使用方法,使程序变得更简单。
责任链模式:
当一个对象在一条链上被多个拦截器拦截处理使,我们把这种设计模式称为责任链模式。简单易懂。
2.3观察者模式
观察者模式又称为发布订购模式。是对象的行为模式(一个对象的变化引起观察者需要做出改变)。观察者模式定义了一种一对多的依赖关系。让对个观察者对象同时监视被观察者的状态,当被观察者的状态发生变化时,会通知所有观察者并让其自动更新自己。
比如商家有一些产品,它和电商合作,当产品有变化的时候,电商也必须做出调整。就拿出新产品Product举例。(这是书上的例子,我这里就按我的理解来记了)
定义产品列表ProductList类,有两个主要属性,产品列表productList,电商列表observerList。当集合productList新增元素product后,就应该图同时observerList中的所有电商,书上是定义了一个notifyObserver的方法。
2.4工厂模式和抽象工厂模式
简单工厂模式(普通工厂模式):一个工厂对应着各种产品,通过多态,按照产品编号可以得到不同的产品。总的说就是多态的体现。
抽象工厂模式:一个抽象工厂的接口,衍生出多个类型的工厂,然后再各自生产产品。客户只需要知道有这么一个工厂,他能生成我所需要的产品就好。
2.5建造者模式
我自己的理解呀,就是在复杂对象的创建中,这个对象可能由很多其他对象组合成。那么当构建这个对象时就可以理工建造者模型。
(例子是套票问题,套票是由成人票,有座儿童票,无座儿童票,老年片,军人及军人家属票中的几种构成)
有一个Helper类,此类中定义了一些构造对象的方法(创建成人票,儿童票等票的对象并返回),创建套票的时候只需要根据需要,利用Helper类中的方法来得到想要的种类的票的对象就好。
互联网轻量级框架SSM-查缺补漏第二天的更多相关文章
- 互联网轻量级框架SSM-查缺补漏第六天【级联+延迟加载特辑】
简言:本来这是昨天看的,但是因为想好好写一下[级联]这个东西,所以就看完之后今天来整理一下. 级联 1. 什么是级联 级联是一个数据库实体的概念.比如教师就需要存在学生与之对应,这样就有教师学生表,一 ...
- 互联网轻量级框架SSM-查缺补漏第八天(MyBatis插件plugin使用及原理)
简言:今天进行第八天的记录(只是写了八天).有的时候看的多,有的时候看的少,看的少的时候就攒几天一起写了.而今天这个插件我昨天写了一下午,下班没写完就回去了,今天把尾收了,再加上一个过程图方便下面原理 ...
- 互联网轻量级框架SSM-查缺补漏第一天
简言:工欲其事必先利其器,作为一个大四的准毕业生,在实习期准备抽空补一下基础.SSM框架作为互联网的主流框架,在会使用的基础上还要了解其原理,我觉得会对未来的职场会有帮助的.我特意的买了一本<J ...
- Java EE互联网轻量级框架整合开发— SSM框架(中文版带书签)、原书代码
Java EE互联网轻量级框架整合开发 第1部分 入门和技术基础 第1章 认识SSM框架和Redis 2 1.1 Spring框架 2 1.2 MyBatis简介 6 1.3 Spring MVC简介 ...
- Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解
上篇文章介绍了自定义View的创建流程,从宏观上给出了一个自定义View的创建步骤,本篇是上一篇文章的延续,介绍了自定义View中两个必不可少的工具Canvas和Paint,从细节上更进一步的讲解自定 ...
- Android查缺补漏(线程篇)-- AsyncTask的使用及原理详细分析
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8515304.html 一.AsyncTask的使用 AsyncTask是一种轻 ...
- 「查缺补漏」巩固你的Nginx知识体系
Nginx篇 基本介绍 Nginx是一款轻量级的 Web服务器 / 反向代理服务器 / 电子邮件(IMAP/POP3)代理服务器,主要的优点是: 支持高并发连接,尤其是静态界面,官方测试Nginx能够 ...
- Android查缺补漏--Activity生命周期和启动模式
一.生命周期 onCreate():启动Activity时,首次创建Activity时回调. onRestart():再次启动Activity时回调. onStart():首次启动Activity时在 ...
- Android查缺补漏(IPC篇)-- Bundle、文件共享、ContentProvider、Messenger四种进程间通讯介绍
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8387752.html 进程间通讯篇系列文章目录: Android查缺补漏(IP ...
- Android查缺补漏(IPC篇)-- 款进程通讯之AIDL详解
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8436529.html 进程间通讯篇系列文章目录: Android查缺补漏(IP ...
随机推荐
- jqGrid-基础篇
jqGrid 是一个用来显示网格数据的jQuery插件,通过使用jqGrid可以轻松实现前端页面与后台数据的ajax异步通信. 一.jqGrid特性 基于jquery UI主题,开发者可以根据客户要 ...
- PLSQL基本操作手册
第1章 用PLSQL连接Oracle数据库 PLSQL只能用来连接Oracle数据库(不象PB还可以连接JDBC.ODBC),所以必须首先安装并配置Oracle客户端. §1.1 初次登录PLSQL ...
- 五,Smarty模板技术/引擎——自定义函数机制
自建函数是smarty提供的函数,不允许修改,只能被调用: 自定义函数是自己编写函数,注册成为smarty的函数,之后可以被调用: 示例:使用smarty自定义函数的机制,编写一个函数myfun1,通 ...
- flink学习笔记:DataSream API
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- python学习笔记1.4
注释不被程序执行的辅助性说明信息- 单行注释:以#开头,其后内容为注释# 这里是单行注释- 多行注释:以'''开头和结尾''' 这是多行注释第一行这是多行注释第二行 ''' 保留字and elif i ...
- mongo的持久化之Journaling
参考文章: http://database.51cto.com/art/201110/295772.htm http://blog.chinaunix.net/uid-15795819-id-3381 ...
- html5兼容问题
1.html5对于ie9一下的版本不支持,所以我们可以添加(你可以下载至本地): <!--[if lt IE 9]> <script src="http://cdn.sta ...
- python学习,day3:集合的学习
集合天生去重,另外集合非常便于两组数字的取交集,并集等计算 # coding=utf-8 # Author: RyAn Bi list_1 =[1,2,3,4,5,6,7] list_1 =set(l ...
- 深入理解计算机系统10——系统级I/O
系统级I/O 输入/输出 是在主存和外部设备之间拷贝数据的过程. 外部设备可以是:磁盘驱动器.终端和网络. 输入和输出都是相对于主存而言的. 输入是从I/O设备拷贝数据到主存.输出时从主存拷贝数据到I ...
- [CH3803] 扑克牌 (期望DP+记忆化搜索)
[题目链接] [CH3803] 扑克牌 [题面描述] \(54\)张牌,每次随机摸一张,求得到 A张黑桃 B张红桃 C张梅花 D张方块 的期望步数.特别地,大王和小王可以当做任意一种花色,当然,会选择 ...