guokehua(@yahoo.com.cn oy Java! 40设计模式(3) 1010 郭克华J2EE框架实战教学视频
oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 40设计模式(3)
guokehua(@yahoo.com.cn 回顾 ●前面我们讲过几种创建模式: Factory, Builder, Singleton ●结构模式: Adapter, Decorator 郭克华J2EE框架实战教学视频
J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 回顾 z 前面我们讲过几种创建模式: Factory,Builder,Singleton z 结构模式:Adapter, Decorator
guokehua(@yahoo.com.cn Proxy:代理模式 ●代理概念可以解释为:在出发点到目的 地之间有一道中间层,意为代理 ●代理服务器 ●场景:有一个图片查看应用,每个图 片都很大,载入很消耗资源,我们希 望有一个界面上显示的是缩略图片, 用户点击缩略图片,能够载入实际的 图片。怎样编写这个应用 ●用代理是一种比较好的办法 郭克华J2EE框架实战教学视频
J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 Proxy:代理模式 z代理概念可以解释为:在出发点到目的 地之间有一道中间层,意为代理. z代理服务器 z场景:有一个图片查看应用,每个图 片都很大,载入很消耗资源,我们希 望有一个界面上显示的是缩略图片, 用户点击缩略图片,能够载入实际的 图片。怎样编写这个应用 z用代理是一种比较好的办法
guokehua(@yahoo.com.cn Proxy小结 ●为其他对象提供一种代理以控制对这个对象的访问 对于开销很大的对象,只有在使用它时才创建这个原 则可以为我们节省很多宝贵的Java内存 些例子 ●1授权机制不同级别的用户对同一对象拥有不同的 访问权利你可以编写一个代理类来负责检查用户权 限来决定他们怎样去访问 2.某个客户端不能直接操作到某个对象,但又必须和 那个对象有所互动 如我们前面讲到的例子 郭克华J2EE框架实战教学视频
J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 Proxy小结 z 为其他对象提供一种代理以控制对这个对象的访问. 对于开销很大的对象,只有在使用它时才创建,这个原 则可以为我们节省很多宝贵的Java内存. z 一些例子 z 1.授权机制 不同级别的用户对同一对象拥有不同的 访问权利,你可以编写一个代理类来负责检查用户权 限来决定他们怎样去访问. z 2.某个客户端不能直接操作到某个对象,但又必须和 那个对象有所互动. 如我们前面讲到的例子
guokehua(@yahoo.com.cn Flyweight(享元) ●场景:字处理软件,如果以每个文字都作 为一个对象,几千个字,对象数就是几千, 无疑耗费内存 ●但是我们发现,很多字(内容以及特征)是 样的 ●另一个场景:你要从一个数据库中读取 系列字符串,这些字符串中有许多是重 复的。 ●可以将这些字符串储存在池(pool)中 郭克华J2EE框架实战教学视频
J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 Flyweight(享元) z场景:字处理软件,如果以每个文字都作 为一个对象,几千个字,对象数就是几千, 无疑耗费内存 z但是我们发现,很多字(内容以及特征)是 一样的 z另一个场景:你要从一个数据库中读取 一系列字符串,这些字符串中有许多是重 复的。 z可以将这些字符串储存在池(pool)中
guokehua(@yahoo.com.cn 享元模式要点 编写享元类 ●编写一个工厂,在工厂里面定义 hashMap类型的享元池,用get函 数进行享元的生成 ●例子 Frame上文本框输入一个字符串,回车,出现以这个字符串为标 题的 Dialog,但是,当你输入的一个字符串如果是以前出现过的,那 么就不要新分配内存 ●以下是从数据库中读入的XML格式的cd数据,要进行处理,你有 何高见? 刘德华 吻别张学友 忘情水刘德华 cd> 郭克华J2EE框架实战教学视频
J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 享元模式要点 z 编写享元类 z 编写一个工厂,在工厂里面定义hashMap类型的享元池,用get函 数进行享元的生成 z 例子:Frame上文本框输入一个字符串,回车,出现以这个字符串为标 题的Dialog ,但是,当你输入的一个字符串如果是以前出现过的,那 么就不要新分配内存. z 以下是从数据库中读入的XML格式的cd数据,要进行处理,你有 何高见? z z 冰雨 刘德华 z 吻别 张学友 z 忘情水 刘德华 z ....... z
guokehua(@yahoo.com.cn 享元模式小结 ●享元模式的目的:避免大量拥有相同 内容的小类的开销(如耗费内存),使大 家共享一个类(元类)对象 ● Flyweight模式是一个提高程序效率和 性能的模式会大大加快程序的运行速 度 ●条件:享元多而小,并且会在以后经 常使用,但是无法估计使用哪一个 郭克华J2EE框架实战教学视频
J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 z享元模式的目的:避免大量拥有相同 内容的小类的开销(如耗费内存),使大 家共享一个类(元类)对象. zFlyweight模式是一个提高程序效率和 性能的模式,会大大加快程序的运行速 度. z条件:享元多而小,并且会在以后经 常使用,但是无法估计使用哪一个 享元模式小结
guokehua(@yahoo.com.cn Observer ●场景:网站产品价格等方面有变化,如 果系统能自动通知会员将是网上商店 区别传统商店的一大特色这就需要在 商品 product加入 Observe这样角色 以便 product细节发生变化时, Observer 能自动观察到这种变化,并能进行及时 的 update或 notify动作 ●一个对象发生变化,能够通知另一个 对象作相应工作 郭克华J2EE框架实战教学视频
J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 Observer z场景:网站产品价格等方面有变化,如 果系统能自动通知会员,将是网上商店 区别传统商店的一大特色.这就需要在 商品product中加入Observer这样角色, 以便product细节发生变化时,Observer 能自动观察到这种变化,并能进行及时 的update或notify动作 z一个对象发生变化,能够通知另一个 对象作相应工作
guokehua(@yahoo.com.cn JAva的AP还为为我们提供现成的 Observer接口 Java util. observer我们 要直接使用它就可以 ●我们的目的主要是想将值变化后通 知客户的工作模块化 郭克华J2EE框架实战教学视频
J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 zJava的API还为为我们提供现成的 Observer接口Java.util.Observer.我们 只要直接使用它就可以. z我们的目的主要是想将值变化后通 知客户的工作模块化
guokehua(@yahoo.com.cn 方案: :编写 Observable类的函数,设置变化点,唤 醒 Observer ●2: Observer里面编写 update方法 ●3:绑定,运行你要做的事情 ●练习:编写一个 Java bean,存放账号,密码, 姓名,余额。当余额改变的时候,能够自动向 数据库里面写一条历史纪录。用观察者模式 郭克华J2EE框架实战教学视频
J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 方案: z 1:编写Observable类的函数,设置变化点,唤 醒Observer z 2:Observer里面编写update方法 z 3:绑定,运行你要做的事情 z 练习:编写一个Java Bean,存放账号,密码, 姓名,余额。当余额改变的时候,能够自动向 数据库里面写一条历史纪录。用观察者模式