
设计模式
harryptter
这个作者很懒,什么都没留下…
展开
-
设计模式(1)----工厂模式
做开发有很长时间了,准备总结下用到的设计模式。工厂模式是最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时,不会对客户端暴露创建逻辑,而且是通过一个共同的接口来指向新创建的对象。意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的问题原创 2018-04-21 15:41:34 · 188 阅读 · 0 评论 -
设计模式之原型模式(java实现)
原型模式(Prototype Pattern):就是从一个对象再创建另一个可定制对象的,而且不需要知道任何创建的细节。所谓原型模式,就是 Java 中的克隆技术,以某个对象为原型。复制出新的对象。显然新的对象具备原 型对象的特点,效率高(避免了重新执行构造过程步骤)。所以当直接创建对象代价比较大的时候,推荐使用这种设计模式,例如对象在访问数据库操作之后被创建,那么可以缓存该对象,在下一个请求是...原创 2018-12-04 17:50:55 · 168 阅读 · 0 评论 -
设计模式之策略模式(java实现)
策略模式(Strategy):在设计模式中属于一种行为模式,一般来说一个类的行为在使用算法可以更改,或者使用的service服务方法有多种选择的时候可以是用策略模式。中在实例化对象的时候用到 Strategy 模式,在 SimpleInstantiationStrategy 有使用。使用场景一个是当有固定算法封装时候,在根据用户需求处理数据的时候需要对算法进行选择的时候可...原创 2018-12-05 08:52:51 · 731 阅读 · 0 评论 -
设计模式之委派模式(java实现)
委派模式(delegate):并不属于23种设计模式,但是面向对象常用的一种设计模式,而且在SpringMVC源码中有大量使用。这种模式原理就是类 B和类 A 是两个互相没有任何关系的类,B 具有和 A 一模一样的方法和属性;并且调用 B 中的方法,属性就是调用 A 中同名的方法和属性。B 好像就是一个受 A 授权委托的中介。第三方的代码不需要知道 A 的 存在,也不需要和 A 发生直接的联系,通...原创 2018-12-05 11:55:25 · 1286 阅读 · 2 评论 -
设计模式之适配器模式(java实现)
适配器模式(Adapter):结构型模式之一,主要作用是兼容和转换,当项目扩展中需要兼容原来的老的代码时候,就可以考虑适配器模式了。适配器模式在Spring源码中也有大量使用,其中AOP的实现里面对 BeforeAdvice、AfterAdvice、ThrowsAdvice 三种通知类型的支持实际上是借 助适配器模式来实现的,这样的好处是使得框架允许用户向框架中加入自己想要支持的任何一种通知类...原创 2018-12-05 13:23:18 · 819 阅读 · 1 评论 -
设计模式之装饰器模式(java实现)
装饰器模式(Decorator):结构型设计模式,为了实现类在不修改原始类的基础上进行动态的覆盖或者增加方法,该实现保持了跟原有类的层级关系。这种设计模式允许向一个现有的对象添加新的功能,同时又不改变其结构。算是一种非常特殊的适配器模式。在实际业务中,有时候我们会创建了多层子类,但如果当子类层数超过三层,一般来说不太建议,这个时候可以考虑使用装饰器模式。Spring中的应用场景:在我们的项...原创 2018-12-05 17:42:18 · 1339 阅读 · 0 评论 -
设计模式之观察者模式(java实现)
观察者模式(Observer):一种行为型的设计模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在Spring中,观察者模式常用的地方是Listener的实现,如ApplicationListener。它一般由两个角色组成:发布者和订阅者(观察者)。观察者通常有一个回调,当然也可以没有。在实际的工作中,监听器,日志收集,短信...原创 2018-12-06 01:37:51 · 274 阅读 · 0 评论 -
设计模式之代理模式(java实现)
代理模式(Proxy):结构型的设计模式,目的是为其他对象提供一种代理以控制对这个对象的访问。即,它的思想是控制类或者接口对外的功能。代理模式分为静态代理模式和动态代理模式两种。在Spring中代理模式常见的是在AOP模块中,比如 JdkDynamicAopProxy 和 Cglib2AopProxy。先说说静态代理。举一个生活化的例子,现在有一个接口Person,儿子类(So...原创 2018-12-09 11:08:46 · 277 阅读 · 0 评论 -
剑指offer 面试题2之单例模式实现
在应聘比较知名的IT或者互联网企业的时候,不管是高级还是中初级工程师都会有很大几率遇到笔试,笔试内容主要就是考察基础了,而且在面试的时候也经常会让手写算法的时候,这部分内容的准备可以刷下剑指offer和leetcode,我这边主要是java,之前看的剑指offer主要是用c++实现的,这边就用java把剑指offer里面的面试题大部分都实现一下。面试题二:实现单例模式不推荐的解法一,单线程...原创 2019-01-26 10:04:22 · 285 阅读 · 0 评论