
设计模式
文章平均质量分 80
liuchangqing123
这个作者很懒,什么都没留下…
展开
-
设计模式——代理
1. AOP代理对象 注意在实现代理模式的时候要对目标对象编写代理类,目标对象必须实现了某些接口才行。当要对没有实现接口的目标类进行实现代理时可以用Spring的lib包中的cglib包实现: 编写的代理工厂类为 public class CglibProxyFactory implements MethodInterceptor{ private Object target原创 2012-02-25 09:52:48 · 929 阅读 · 0 评论 -
设计模式——工厂模式
工厂模式:工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 1)简单工厂模式(Simple Factory):不利于产生系列产品; 2)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品; 一·首先我们实现简单工厂模式: 我们的需求是建立交通工具类,该类有移动的功能,因为交通工具有很多种具体的产原创 2012-03-21 20:00:47 · 1457 阅读 · 0 评论 -
设计模式——责任链
责任链模式(Chain of Responsibility)的目标是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。 在处理用户的请求时可能要根据不同的情况对请求添加不同的处理逻辑,在这时候就可以利用责任链进行设计。当需要添加一个处理逻辑时可以很方便的添加一个处理的节点。 现在我们的需求是处理用户的请原创 2012-03-23 15:19:49 · 8666 阅读 · 5 评论 -
设计模式——组合模式
描述: 允许你将对象组合成树形结构来表现“整体/部分”的层次结构。组合能让客户以一致的的方式处理个别对象以及对象组合。 实例: 组合菜单和菜单项。 类图: 以下程序演示了打印菜单项和包含菜单项的菜单组合功能。 1.菜单组件抽象类 package net.dp.composite.menu; public abstract class MenuCompo原创 2015-02-25 17:04:13 · 526 阅读 · 0 评论 -
设计模式——迭代器
由于ArrayList和LinkedList都是集合类型,所以可以抽象出Connection接口,这样在使用到集合的时候就可以创建Connection的引用,而具体的实现是交给具体的集合类去实现。从而实现了多态。同样为了给集合类型提供迭代器,可以抽象出Iterator接口。在Connection接口中创建得到迭代器的方法。 首先创建Iterator接口: package com.lcq.d原创 2012-03-11 20:45:52 · 1571 阅读 · 0 评论 -
设计模式——状态模式
描述: 允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。 通常应用在有好多状态的流程中。 类图: 以下程序模拟糖果机器投币取糖果的状态流程。 1.定义状态结构 package net.dp.s原创 2015-02-25 17:10:02 · 551 阅读 · 0 评论 -
设计模式——模板方法
描述: 在一个方法中定义一个算法的骨架。将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤。 钩子:定义一个空的方法或者默认的方法,提供用户子类根据情况去覆盖实现自身的判断和功能。 通过钩子可以影响抽象类中的算法流程。在算法的某个地方是可选的就设置钩子。让子类有能力为其抽象类做一些决定。 类图: 以下程序模拟制作不同饮料的过程原创 2015-02-25 16:59:52 · 709 阅读 · 0 评论 -
设计模式——适配器模式
适配器模式:Adapter 改造现有的接口从而适应新接口的要求。 适配器中需要有要适配的对象的引用。 适配器中包装多个被适配者是外观模式。 适配器模式的意图是改变接口符合客户的期望,外观模式的意图是提供子系统的一个简化接口。 这里容易联想到外观模式。外观模式提供了一个统一的接口,用来访问子系统中的一群接口。 比较以下三者的区别 装饰器 不改变接口但原创 2015-02-25 16:55:11 · 703 阅读 · 0 评论 -
设计模式——命令模式
命令模式: 将请求封装成对象,从而使用不同的请求、队列以及日志来参数化其他对象。命令对象支持可撤销的操作。命令对象将动作和接收者包进对象中。实现“行为请求者”与“行为实现者”解耦。 要点: 命令对象中动作和接收者被绑在一起,控制器调用命令对象的execute方法。 应用: 线程池、队列请求、日志请求。 类图: 以下程序模拟一个控制器对客厅的灯和车库的门进行控制。原创 2015-02-25 16:49:22 · 501 阅读 · 0 评论 -
设计模式——观察者
观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,他的所有的依赖者都会收到通知并自动更新; 定义主题,主题的功能是持有观察者的引用,提供注册、取消注册和通知,并且有状态;观察者实现接口中的update方法,必须注册具体主题; JDK自带了对观察者的支持功能 被观察者Observable对象,提供add/delete/notifyObserver()和setChanged()设原创 2015-02-25 16:36:53 · 846 阅读 · 0 评论 -
设计模式——策略模式
策略模式的定义:把会变化的内容取出并封装起来,以便以后可以轻易地改动或扩充部分,而不影响不需要变化的其他部分; Java是面向对象的语言,所以利用面向对象的思维去编写程序实现功能,重要的一点莫过于使用Java的封装和多态的概念。以下是编写的是实现排序功能的类,在排序类DataSorter中的排序的方法对于不同的场合,其排序的规则是不同的,所以将排序规则进行抽象,抽象出Comparable接原创 2012-03-12 17:51:50 · 1456 阅读 · 2 评论 -
设计模式——装饰者模式
装饰者模式: 首先定义抽象的组件类,子类继承该类后持有抽象类的引用,在抽象类的基础上可以在调用父类方法前后分别执行自己的行为。从而实现装饰添加新的功能特性。再次强调了使用组合的好处。 强调对扩展开放,对修改关闭。 在Java I/O中应用了装饰者模式。 装饰者模式类图:原创 2015-02-25 16:43:59 · 670 阅读 · 0 评论 -
设计模式——单例模式
单例模式:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 但我们建立了一个简单的单例类后就可以在单例类中对要创建的对象进行自我创建,定向的向外界提供而不允许外界去创建。这样就可以实现对一些对象和资源的身份权限的验证和达到控制资源的目的。利用单例模式生成的对象是唯一的,确保外界多次引用的对象是同一个。对于一些占用资源较多的类有时候会原创 2012-03-21 20:09:09 · 1172 阅读 · 0 评论