
设计模式
yakax
这个作者很懒,什么都没留下…
展开
-
Mybatis3源码分析(5)spring集成分析与mybatis所用到的设计模式
这里我们以传统的 Spring 为例,因为配置更直观,在 Spring 中使用配置类注解是一样的。在前面文章里面,我基于编程式的工程已经弄清楚了 MyBatis 的工作流程、核心模块和底层原理。编程式的工程,也就是 MyBatis 的原生 API 里面有三个核心对象:SqlSessionFactory、SqlSession、MapperProxy大部分时候我们不会在项目中单独使用 MyBati...原创 2020-02-19 20:18:46 · 176 阅读 · 0 评论 -
各类设计模式对比与Spring设计模式的总结
分类 设计模式 创建型 工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)、单例模式(Singleton) 结构型 适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰器模式...原创 2020-02-19 19:33:15 · 240 阅读 · 0 评论 -
原型设计模式
应用场景原型模式就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。所谓原型模式,就是 Java 中的克隆技术,以某个对象为原型。复制出新的对象。显然新的对象具备原型对象的特点,效率高(避免了重新执行构造过程步骤,而且实例的创建开销比较大或者需要输入较多参数)。浅克隆说明浅复制仅仅复制所克隆的对象,而不复制它所引用的对象。 Object类提供的方法clone只是拷贝...原创 2020-02-19 19:21:17 · 172 阅读 · 0 评论 -
适配器设计模式
应用场景已经存在的类,它的方法和需求不匹配(方法结果相同或相似)的情况适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案代码方法类public interface Target { void methed();}准备适配的类(这里可以是抽象类也可以是普通类)class ReadyAdapter {...原创 2020-02-19 19:19:08 · 134 阅读 · 0 评论 -
装饰设计模式
应用场景用于扩展一个类的功能或给一个类添加附加职责动态的给一个对象添加功能,这些功能可以再动态的撤销在spring mvc中 HttpHeadResponseDecorator类就是使用的装饰者在mybatis中(org.apache.ibatis.cache.Cache)里面就有许多关于缓存的装饰者类(后续我会在mybatis源码分析里面看)。在jdk中io相关的类(比如InputS...原创 2020-02-19 19:16:55 · 103 阅读 · 0 评论 -
委派设计模式
应用场景委派其实就是静态代理和策略模式一种特殊的组合,因为代理模式注重过程,而委派模式注重结果。在我们日常开发中的spring mvc中的DispatcherServlet类就是用了委派模式,其原理就是根据用户的url在handlerMapping里面找到对应的处理类,然后委派到具体方法。在 Spring 源码中,只要以 Delegate 结尾的都是实现了委派模式。例如:BeanDefinit...原创 2020-02-19 19:08:16 · 167 阅读 · 0 评论 -
模板设计模式
应用场景定义一个模板结构,将具体内容延迟到子类去实现,在不改变模板结构的前提下在子类中重新定义模板中的内容。比如JDBC;优点提高代码复用性将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中实现了反向控制通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制 & 符合“开闭原则”缺点引入了抽象类,每一个不同的实现都需要一个子类来...原创 2020-02-19 19:06:55 · 218 阅读 · 0 评论 -
观察设计模式
应用场景观察者模式有时也叫做发布订阅模式。主要用于在关联行为之间建立一套触发机制的场景(例如一些提醒业务、MQ等等)java.awt.Event 就是观察者模式的一种,只不过 Java 很少被用来写桌面程序。上面的比如点击事件等等都是通过发布订阅绑定来触发事件。在spring 中ContextLoaderListener是实现了ServletContextListener接口,这个接口也...原创 2020-02-19 19:05:56 · 344 阅读 · 0 评论 -
单例模式
单例的好处单例模式的初衷就是为了使资源能够共享,只需要赋值或者初始化一次,大家都能够重复利用。一个类Class只有一个实例存在。 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收;常见的单例有枚举常量类、IOC容器、配置项等等。普通单例模式-饿汉式public class Singleton { private static Singl...原创 2020-02-19 19:04:21 · 113 阅读 · 0 评论 -
代理设计模式
应用场景为其他对象提供一种代理以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。关键:代理对象与目标对象.代理对象是对目标对象的扩展,并会调用目标对象;这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法;静态代理说明静态代理在使用时,需要...原创 2020-02-19 19:03:14 · 138 阅读 · 0 评论 -
抽象工厂模式
因为抽象工厂模式在spring中用的比较多,例如spring的心脏BeanFactory就是利用抽象工厂模式来管理bean的。最主要的就是把具体功能抽象出来上代码先建立产品的接口方法类/** * 定义一个牛奶的接口 */public interface Milk { String getName();}产品实现功能/** * 伊利产品 */public cla...原创 2020-02-19 19:01:49 · 342 阅读 · 0 评论 -
策略设计模式
应用场景一个系统需要动态地在几种算法中选择一种的情况优点易于扩展, 增加一个新的策略只需要添加一个具体的策略类即可,基本不需要改变原有的代码,符合开闭原则;避免使用多重条件选择语句(if else),充分体现面向对象设计思想。缺点客户端必须知道所有的策略类,并自行决定使用哪一个策略类代码示例Strategy接口 定义策略方法public interface Strategy...原创 2020-02-19 18:59:28 · 93 阅读 · 0 评论 -
设计模式七大原则
单一职责原则(Single Responsibility Principle,简称SRP )核心思想:应该有且仅有一个原因引起类的变更问题描述:假如有类Class1完成职责T1,T2,当职责T1或T2有变更需要修改时,有可能影响到该类的另外一个职责正常工作。好处:类的复杂度降低、可读性提高、可维护性提高、扩展性提高、降低了变更引起的风险需注意:单一职责原则提出了一个编写程序的标准,用“职...原创 2020-02-19 18:53:09 · 138 阅读 · 0 评论