- 浏览: 48960 次
- 性别:
- 来自: 北京
最新评论
文章列表
观察者(Observer)模式
- 博客分类:
- 设计模式
观察者(Observer)模式又名发布-订阅(Publish/Subscribe)模式。GOF给观察者模式如下定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
在这里先讲一下面向对象设计的一个重要原则——单一职责原则。因此系统的每个对象应该将重点放在问题域中的离散抽象上。因此理想的情况下,一个对象只做一件事情。这样在开发中也就带来了诸多的好处:提供了重用性和维护性,也是进行重构的良好的基础。
因此几乎所有的设计模式都是基于这个基本的设计原则来的。观察者模式的起源我觉得应该是在GUI和业务数据的处理上,因为现在绝大多数讲解观察者 ...
Eclipse的常用设置
- 博客分类:
- Eclipse的常用设置
1,设置默认的全局JRE: Window->Preferences-> Java -> Installed JREs ,这样每次新建项目时,默认的JRE库即为选中的项。 2,设置工作空间全局编码: 设置UTF-8 Window->Preferences->General->Workspace 中Text file encoding 选择other并选UTF-8 3,修改文件默认编码: Window -> Preferences -> General -> Content Types 【注意是修改最下面的Default encoding ...
WHERE条件的优化:1、IN:至少多一个转换的过程(先试图转成多个表的连 接,如果转换不成功先执行IN里面的子查询,再查询外层记录)2、NOTIN:不能应用表索引,可用NOT EXISTS替换的3、<>: 不用索引,全表扫描。替换方案:>X OR <Y4、>与>=的区别 >2会从2开始找数据,>=3则是从3开始找数据。但是>=3不知道是否会影响索引功能,采用哪个需根据实际数据(自己估测)选择。5、 LIKE:'%%'将不使用索引,'%'引用范围索引6、UNION:二表链接后进行排序,删除重复,再返回结果。UNION ALL 直接合并返回 ...
研磨设计模式之工厂方法模式-5
- 博客分类:
- 设计模式
3.3 平行的类层次结构
(1)什么是平行的类层次结构呢? 简单点说,假如有两个类层次结构,其中一个类层次中的每个类在另一个类层次中都有一个对应的类的结构,就被称为平行的类层次结构。 举个 ...
研磨设计模式之工厂方法模式-4
- 博客分类:
- 设计模式
3.2 工厂方法模式与IoC/DI
IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入
1:如何理解IoC/DI 要想理解上面两个概念,就必须搞清楚如下的问题:
参与者都有谁?
依赖:谁依赖于谁?为什么需要依赖?
注入:谁注入于谁?到底注入什么?
控制反转:谁控制谁?控制什么?为何叫反转(有反转就应该有正转了)?
依赖注入和控制反转是同一概念吗?
下面就来简要的回答一下上述问题,把这些问题搞明白了,IoC/DI也就明白了。(1)参与者都有谁:
...
研磨设计模式之工厂方法模式-3
- 博客分类:
- 设计模式
3 模式讲解
3.1 认识工厂方法模式
(1)模式的功能 工厂方法的主要功能是让父类在不知道具体实现的情况下,完成自身的功能调用,而具体的实现延迟到子类来实现。 这样在设计的时候,不用去考 ...
研磨设计模式之工厂方法模式-2
- 博客分类:
- 设计模式
2 解决方案
2.1 工厂方法模式来解决
用来解决上述问题的一个合理的解决方案就是工厂方法模式。那么什么是工厂方法模式呢?(1)工厂方法模式定义 定义一个用于创建对象的接口,让子类决定 ...
研磨设计模式之桥接模式-4
- 博客分类:
- 设计模式
3.4 广义桥接-Java中无处不桥接
使用Java编写程序,一个很重要的原则就是“面向接口编程”,说得准确点应该是“面向抽象编程”,由于在Java开发中,更多的使用接口而非抽象类,因此通常就说成“面向接口编程”了。 接口把具体的实现和使用接口的客户程序分离开来,从而使得具体的实现和使用接口的客户程序可以分别扩展,而不会相互影响。使用接口的程序结构如图12所示: 图12 使用接口的程序结构示意图
可能有些朋友会觉得,听起来怎么像是桥接模式的功能呢?没错,如果把桥接模式的抽象部分先稍稍简化一 ...
研磨设计模式之桥接模式-3
- 博客分类:
- 设计模式
3 模式讲解
3.1 认识桥接模式
(1)什么是桥接 在桥接模式里面,不太好理解的就是桥接的概念,什么是桥接?为何需要桥接?如何桥接?把这些问题搞清楚了,也就基本明白桥接的含义了。 一个一个 ...
研磨设计模式之桥接模式-2
- 博客分类:
- 设计模式
2 解决方案
2.1 桥接模式来解决
用来解决上述问题的一个合理的解决方案,就是使用桥接模式。那么什么是桥接模式呢?
(1)桥接模式定义 将抽象部分与它的实现部分分离,使它们都可以独立地变化。
(2)应用桥接模式来解决的思路 仔细分析上面的示例,根据示例的功能要求,示例的变化具有两个纬度,一个纬度是抽象的消息这边,包括普通消息、加急消息和特急消息,这几个抽象的消息本身就具有一定的关系,加急消息和特急消息会扩展普通消息;另一个纬度在具体的消息发送方式上,包括站内短消息、Email和手机短信息,这几个方式是平等的,可被切换的方式。这 ...
模式4.研磨设计模式之桥接模式-1
- 博客分类:
- 设计模式
来写一个大家既陌生又熟悉的设计模式,也是非常实用的一个设计模式,那就是桥接模式。
说陌生是很多朋友并不熟悉这个设计模式,说熟悉是很多人经常见到或者是下意识的用到这个设计模式,只是不知道罢了。桥接模式是非常实用的一个模式,下面就来写写它。
桥接模式(Bridge)
1 场景问题
研磨设计模式之策略模式-6
- 博客分类:
- 设计模式
3.4 策略模式结合模板方法模式
在实际应用策略模式的过程中,经常会出现这样一种情况,就是发现这一系列算法的实现上存在公共功能,甚至这一系列算法的实现步骤都是一样的,只是在某些局部步骤上有所不同 ...
研磨设计模式之策略模式-5
- 博客分类:
- 设计模式
接策略模式-4,其实是讲的一个主题,写在一个里面超长了,只好分成了两个,请见谅!
3:扩展示例,实现方式一 经过上面的测试可以看出,通过使用策略模式,已经实现好了两种支付方式了。如果现在要增加一种支付方式,要求能支付到银行卡,该怎么扩展最简单呢? 应该新增加一种支付到银行卡的策略实现,然后通过继承来扩展支付上下文,在里面添加新的支付方式需要的新的数据,比如银行卡账户,然后在客户端使用新的上下文和新的策略实现就可以了,这样已有的实现都不需要改变,完全遵循开-闭原则。 先看看扩展的支付上下文对象的实现,示例代码如下:
...
研磨设计模式之策略模式-4
- 博客分类:
- 设计模式
3.3 Context和Strategy的关系
在策略模式中,通常是上下文使用具体的策略实现对象,反过来,策略实现对象也可以从上下文获取所需要的数据,因此可以将上下文当参数传递给策略实现对象,这种情况下上下文和 ...