摘要: 享元模式:运用共享技术有效地支持大量细粒度的对象 下面举例说明,假设项目需要创建多个数据库连接,但希望一个数据库只有一个连接实例 首先定义享元类: 下面创建享元工厂,用来创建并管理享元对象。它确保合理的共享享元,当用户请求某个享元时,享元工厂对象提供一个已创建的实例或者创建一个实例提供给用户 客户端 阅读全文
posted @ 2016-05-11 15:07 angela217 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 中介者模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 下面举例说明多个聊天者和一个中介者: 首先定义多个接收者,每个接收者都只知道自己的行为,而不了解其他接收者的情况,但它们却都认识中介者对象 下面定义中介者,它需 阅读全文
posted @ 2016-05-11 14:10 angela217 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 下面举例说明,实现员工提交请求,主管层层审批: 首先定义请求类 下面定义职责链中的审批人: 客户端设置请求和审批的职责链: 执行结果为: 毛毛 阅读全文
posted @ 2016-05-10 11:00 angela217 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。 下面举例说明: 首先定义命令的具体执行者 定义抽象命令和多个具体的命令: 下面定义最关键的Invoker,它负责将接受客户端的命令,然后将一批命令发送给执行者执行: 客户端调 阅读全文
posted @ 2016-05-10 10:38 angela217 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 在面向对象的编程中,我们经常会使用继承,但事实上,很多情况用继承会带来麻烦,因为对象的继承关系是在编译时就定义好了,所以无法再运行时改变从父类继承的实现,子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决新的问 阅读全文
posted @ 2016-05-09 09:34 angela217 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得同一个对象被访问,但是它不能防止你实例化多个对象,一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其它实例可以被创建,并且它可以提供一个访问该实例的方法。 举例如下: 客户端调用: 运 阅读全文
posted @ 2016-05-05 11:42 angela217 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 下面举例实现: 首先定义抽象聚集类和具体聚集类 下面定义一个抽象迭代器类和具体迭代器类 客户端使用具体迭代器访问具体聚集类中的成员: 执行结果如下: 0 1 2 当你需要访问一个聚集对象,而且不管这些对象是什么都 阅读全文
posted @ 2016-05-05 11:09 angela217 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 组合模式:将对象组合成树结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 举例实现公司,分公司,部门等的组合关系: 实现声明组合中的对象接口,在适当的情况下实现所有类共有接口的默认行为,声明一个接口用户访问和管理所有的子部件: 下面定义子部件行为,在Comp 阅读全文
posted @ 2016-05-03 11:13 angela217 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 备忘录:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。 举例如下: Originator:发起人,负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。它根据需要决定Memento存储Orig 阅读全文
posted @ 2016-05-03 10:58 angela217 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 适配器模式:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 在系统的数据和行为都正确,但是接口不符合时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。它主要应用于希望复用一些现存的类,但是接口又与复用环境要 阅读全文
posted @ 2016-04-27 16:49 angela217 阅读(188) 评论(0) 推荐(0) 编辑