摘要: 设计模式六大原则 标签(空格分隔): 设计模式 单一职责 一个类,能引起其变化的原因只能有一个。如果一个类中,承担的职责越多,代码耦合度就越高,在修改需求时就会由于修改一个职责而影响另一个职责的使用。 反例: 问题:如果修改鱼吸水,就会破坏单一原则,所以就需要把类分成陆生和水生。但其实在实际项目中,阅读全文
posted @ 2018-03-31 19:16 码头工人 阅读(7) 评论(0) 编辑
摘要: DispatcherServlet UML图 本次分析:HttpServlet HttpServletBean FramworkServlet DispacherServlet ServletContext是什么? ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务阅读全文
posted @ 2018-03-31 19:05 码头工人 阅读(21) 评论(0) 编辑
摘要: 问题 在spring 中使用 @Transactional 、 @Cacheable 或 自定义 AOP 注解时,对象内部方法中调用该对象的其他使用aop机制的方法会失效。 在同一个类中的方法级别调用也会导致 aop 注解失效 原因 Spring AOP使用JDK动态代理和CGLib,由于没有接口的阅读全文
posted @ 2018-03-31 19:04 码头工人 阅读(382) 评论(0) 编辑
摘要: 静态代理与动态代理 静态代理 代理模式 (1)代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是指静态代理,也就是在代码中显式指定的代理。 (2)静态代理由 业务实现类、业务代理类 两部分组成。业务实现类 负责实现主要的业务方法,业务代理类负责对调用的业务方法作拦截、过滤、预处理,主要是阅读全文
posted @ 2018-03-31 19:00 码头工人 阅读(30) 评论(0) 编辑
摘要: 什么是建造者 建造者模式实际上是常用的设计模式。顾名思义,builder的意思是建造者或者建筑工人,谈到建造自然会想到楼房。楼房是千差万别的,楼房的外形、层数、内部房间的数量、房间的装饰等等都不一样,但是对于建造者来说,抽象出来的建筑流程是确定的,往往建筑一座楼房包括下面的步骤:(1)打桩,建立基础阅读全文
posted @ 2018-03-31 18:54 码头工人 阅读(13) 评论(0) 编辑
摘要: 备忘录模式定义 在不破坏封装新的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将对象恢复到原先保存的状态。通俗来说,备忘录模式就是一个对象的备份模式,提供一种程序数据的备份。 使用场景 备忘录模式,是一个后悔药机制,为什么这么说呢?举个例子,春招来了,我们什么都没准备就去面阅读全文
posted @ 2018-03-31 18:53 码头工人 阅读(17) 评论(0) 编辑
摘要: 迭代器模式定义 提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。 使用场景 循环打印一个字符串集合,里面就用到了迭代器模式,迭代器的作用就是将容器中的对象遍历出来。 UML图 容器实现迭代实例 一般不需要重写迭代器,因为JAVA中已经提供阅读全文
posted @ 2018-03-31 18:53 码头工人 阅读(11) 评论(0) 编辑
摘要: 中介者模式定义 中介者对象封装系列的对象交互,中介者使得对象不需要显示地相互作用,从而松耦合,能够独立改变它们之间的交互。 中介者模式角色 抽象中介者: 用于各个同事类之间的通信,同事类对象到中介者对象的接口。包括一个或几个抽象的事件方法,由子类实现。 中介者实现类: 从一个同事类接收消息,通过消息阅读全文
posted @ 2018-03-31 18:52 码头工人 阅读(7) 评论(0) 编辑
摘要: 状态模式定义 状态模式将不同的对象行为封装到不同状态对象中,通过选择不同状态对象来控制其行为。 说得再通俗一点就是通过一个管理类来选择不同实现,各个实现的方法不同。 状态模式角色 (1)环境角色(Context) 保留一个目前具体的状态类的对象。这个对象就是目前环境的状态。 (2)抽象状态角色(St阅读全文
posted @ 2018-03-31 18:49 码头工人 阅读(9) 评论(0) 编辑
摘要: 享元模式定义 复用内存中已经存在的对象,降低重复创建对象的性能消耗。 享元模式 UML图 享元共享技术 享元中内部状态时共享的,Flyweight factory负责维护一个对象池(Flyweight pool)。细粒度的对象和共享对象,当我们分配太多的对象到应用程序中将有损程序的性能,同时还容易造阅读全文
posted @ 2018-03-31 18:49 码头工人 阅读(16) 评论(0) 编辑