文章分类 -  java设计模式

摘要:观察者模式: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。观察者模式的组成:抽象主题(Subject)角色:抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实... 阅读全文
posted @ 2014-04-14 16:37 sky钦 阅读(111) 评论(0) 推荐(0)
摘要:AOP(Aspect-Oriented Programming,面向方面编程)以做饭为例,我们重点是关注中间的炒菜过程,但炒菜之前要择菜,之后要刷锅,即我们只关注炒菜过程这一个方面。抽象角色:1 public interface Subject {2 public void request(... 阅读全文
posted @ 2014-04-14 15:40 sky钦 阅读(178) 评论(0) 推荐(0)
摘要:JAVA回顾:产生一个java对象的几种常见做法:直接使用new的方式开辟对象:类 对象 = new 类(); 接口类型 对象名称 = new 接口子类();——>在客户端调用时必须明确知道有哪几个子类,直接造成了一个重要缺点:两个程序之间紧密耦合。使用工厂设计模式,引入工厂类; 可以解决客... 阅读全文
posted @ 2014-04-13 21:43 sky钦 阅读(169) 评论(0) 推荐(0)
摘要:转载自:http://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上 传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态 地重新组织和分配责任。从击鼓传花谈起 击鼓传花是一种热闹而又紧张的饮酒游.. 阅读全文
posted @ 2014-04-03 21:47 sky钦 阅读(81) 评论(0) 推荐(0)
摘要:1.构造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 (同样的构造过程其实就是指很多个不同的构造者有相同的构造方法。)2.优点:使得构造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以如果要改变一个产品的内部表示,只需要再定义一个具体的构造者即可。3.解决的问题:主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但是对象内部的构建通常面临着复杂的变化。4.构造者模式的角色:产品(Product)角色:整个构造模式的产物;抽象构造器(Builder)角色:具体构造器(ConcreteBuilder)角色:具. 阅读全文
posted @ 2014-04-03 20:19 sky钦 阅读(338) 评论(0) 推荐(0)
摘要:1.定义:策略模式是针对一组算法或者行为特性,将它们抽象到具有共同接口函数的独立抽象类或接口中,从而使得它们可以相互替换。 这样就使得某一个特定的接口行为可以在不影响客户端的情况下发生变化。基本实现示意图:2. 策略模式主要分为以下三个角色: 环境角色(Context):持有一个策略类引用 抽象策略(Strategy):定义了多个具体策略的公共接口,具体策略类中各种不同的算法以不同的方式实现这个接口;Context使用这些接口调用不同实现的算法。一般的,我们使用接口或抽象类实现。 具体策略(ConcreteStrategy):实现抽象策略类中的相关的算法或操作。3.策略模式的好处:提供了管.. 阅读全文
posted @ 2014-04-03 17:04 sky钦 阅读(133) 评论(0) 推荐(0)
摘要:1. 定义:装饰模式以对客户端透明的方式,动态地为一个对象(不是类)添加一些额外的功能。又名包装模式(Wrapper)2.装饰模式可以在不创造更多的子类的模式下,将对象的功能加以扩展。3. 装饰模式与类继承的区别:装饰模式是一种动态行为,对已经存在的类进行随意组合,而继承是一种静态行为,一个类定义成什么样的,该类的对象便具有什么样的功能,无法动态改变;装饰模式扩展的是对象的功能,不需要增加类的数量,而类继承扩展的是类的功能,通过对覆写父类方法或添加新方法完成;对于基类A,其已经有子类B,现在如果需要增加其它功能,则需要增加一个新的子类C,造成子类数量增多。装饰模式可以解决这一问题。4.装饰模式 阅读全文
posted @ 2014-04-03 15:30 sky钦 阅读(88) 评论(0) 推荐(0)
摘要:1、线程安全问题的由来 在传统的Web开发中,我们处理Http请求最常用的方式是通过实现Servlet对象来进行Http请求的响应。Servlet是J2EE的重要标准之一,规定了Java如何响应Http请求的规范。通过HttpServletRequest和HttpServletResponse对象,我们能够轻松地与Web容器交互。 当Web容器收到一个Http请求时,Web容器中的一个主调度线程会从事先定义好的线程中分配一个当前工作线程,将请求分配给当前的工作线程,由该线程来执行对应的Servlet对象中的service方法。当这个工作线程正在执行的时候,Web容器收到另外一个请求,主调度.. 阅读全文
posted @ 2014-04-03 13:06 sky钦 阅读(104) 评论(0) 推荐(0)
摘要:Java动态代理主要涉及到两个类:Proxy类:Proxy类的设计用到代理模式的设计思想,Proxy类对象实现了代理目标的所有接口,并代替目标对象进行实际的操作。但这种替代不是一种简单的替代,这样没有任何意义,代理的目的是在目标对象方法的基础上作增强,这种增强的本质通常就是对目标对象的方法进行拦截。所以,Proxy应该包括一个方法拦截器,来指示拦截到方法调用时做何种处理。InvocationHandler就是拦截器的接口。InvocationHandler接口:此接口仅定义了一个方法 Object invoke(Object proxy , Method method , Object[... 阅读全文
posted @ 2014-04-02 20:05 sky钦 阅读(89) 评论(0) 推荐(0)
摘要:1.定义:对其它对象提供一种代理,以控制对这个对象的访问。 理解:在某些情况下,一个对象不想或者不能引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。2. 代理模式的角色: 抽象角色: 其实就是真实角色和代理角色将实现的接口。 代理角色:实现抽象角色(接口)的类,其内部含有对真... 阅读全文
posted @ 2014-04-02 18:15 sky钦 阅读(139) 评论(0) 推荐(0)