随笔分类 -  设计模式

摘要:描述:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。通常应用在有好多状态的流程中。类图:以下程序模拟糖果机器投币取糖果的状态流程。1.定义状态... 阅读全文
posted @ 2015-02-08 23:43 心休 阅读(188) 评论(0) 推荐(0)
摘要:描述: 允许你将对象组合成树形结构来表现“整体/部分”的层次结构。组合能让客户以一致的的方式处理个别对象以及对象组合。实例: 组合菜单和菜单项。类图:以下程序演示了打印菜单项和包含菜单项的菜单组合功能。1.菜单组件抽象类package net.dp.composite.menu;public abs... 阅读全文
posted @ 2015-02-08 23:33 心休 阅读(152) 评论(0) 推荐(0)
摘要:描述:在一个方法中定义一个算法的骨架。将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤。钩子:定义一个空的方法或者默认的方法,提供用户子类根据情况去覆盖实现自身的判断和功能。 通过钩子可以影响抽象类中的算法流程。在算法的某个地方是可选的就设置钩子。让子类有... 阅读全文
posted @ 2015-02-07 00:29 心休 阅读(134) 评论(0) 推荐(0)
摘要:适配器模式:Adapter改造现有的接口从而适应新接口的要求。适配器中需要有要适配的对象的引用。适配器中包装多个被适配者是外观模式。适配器模式的意图是改变接口符合客户的期望,外观模式的意图是提供子系统的一个简化接口。这里容易联想到外观模式。外观模式提供了一个统一的接口,用来访问子系统中的一群接口。比... 阅读全文
posted @ 2015-02-07 00:11 心休 阅读(172) 评论(0) 推荐(0)
摘要:命令模式:将请求封装成对象,从而使用不同的请求、队列以及日志来参数化其他对象。命令对象支持可撤销的操作。命令对象将动作和接收者包进对象中。实现“行为请求者”与“行为实现者”解耦。要点: 命令对象中动作和接收者被绑在一起,控制器调用命令对象的execute方法。应用: 线程池、队列请求、日志请求。类图... 阅读全文
posted @ 2015-02-06 23:56 心休 阅读(174) 评论(0) 推荐(0)
摘要:装饰者模式:首先定义抽象的组件类,子类继承该类后持有抽象类的引用,在抽象类的基础上可以在调用父类方法前后分别执行自己的行为。从而实现装饰添加新的功能特性。再次强调了使用组合的好处。强调对扩展开放,对修改关闭。在Java I/O中应用了装饰者模式。装饰者模式类图:以下程序来自Head First设计模... 阅读全文
posted @ 2015-02-06 23:44 心休 阅读(176) 评论(0) 推荐(0)
摘要:观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,他的所有的依赖者都会收到通知并自动更新;定义主题,主题的功能是持有观察者的引用,提供注册、取消注册和通知,并且有状态;观察者实现接口中的update方法,必须注册具体主题;JDK自带了对观察者的支持功能被观察者Observable对象,提供... 阅读全文
posted @ 2015-02-06 23:33 心休 阅读(371) 评论(0) 推荐(0)
摘要:工厂模式:工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。1)简单工厂模式(Simple Factory):不利于产生系列产品;2)工厂方法模式:(生产同一种类型的产品,不同风味) 将生产产品的类做成抽象类,抽象方法中创建产品。由子类处理对象的实例化... 阅读全文
posted @ 2012-03-21 11:26 心休 阅读(1668) 评论(2) 推荐(1)
摘要:单例模式:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。但我们建立了一个简单的单例类后就可以在单例类中对要创建的对象进行自我创建,定向的向外界提供而不允许外界去创建。这样就可以实现对一些对象和资源的身份权限的验证和达到控制资源的目的。... 阅读全文
posted @ 2012-03-21 10:46 心休 阅读(201) 评论(0) 推荐(0)
摘要:策略模式:将动作等变化的东西抽离出来变成行为。这样具体的不变化的事物中会有行为的接口引用,当具体调用的时候可以动态设置他的接口实现类从而动态的改变行为。要点:封装变化;多用组合,少用继承;针对接口(不单单是接口可以包含抽象类等)编程,不针对实现编程。类图:把会变化的内容取出并封装起来,以便以后可以轻... 阅读全文
posted @ 2012-03-12 17:51 心休 阅读(214) 评论(0) 推荐(0)
摘要:描述:迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让任务各得其所。以下程序模拟Java集合中迭代器的实现。迭代器类图:由于ArrayList和LinkedList都是集合类型,所以可以抽象出... 阅读全文
posted @ 2012-03-11 20:45 心休 阅读(343) 评论(0) 推荐(0)
摘要:代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。按照代理的创建时期,代理类可以分为两种。静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理:在程序运行时,运用反射机制动态创建而成。代理类图:Spring中实现AOP... 阅读全文
posted @ 2012-02-25 09:52 心休 阅读(174) 评论(0) 推荐(0)