23种设计模式
雨降
这个作者很懒,什么都没留下…
展开
-
【23种设计模式之】0.简单工厂模式,1.工厂方法模式,2、抽象工厂模式——概述及适用场景
参考网站:工厂模式的作用,为什么要用工厂模式?,23种设计模式全解析源码:工厂模式的好处:解耦:把对象的创建和使用的过程分开。工厂类专门负责创建各种产品类,用户只需要考虑使用哪种产品,并通过工厂类创建它。高效:如果创建产品的过程都很复杂,需要一定的代码量,而且很多地方都要用到,那么就会有很多的重复代码,通过工厂类统一创建可以避免代码重复问题。便于维护:由于创建过程都由工厂统一管理,所以...原创 2019-03-25 20:27:38 · 222 阅读 · 0 评论 -
【23种设计模式之】15.观察者模式
练习源码:https://github.com/liaoooyx/Design-Patterns来自:https://www.baeldung.com/java-observer-patternObserver is a behavioral design pattern. It specifies communication between objects: observable and o...转载 2019-04-13 19:44:26 · 128 阅读 · 0 评论 -
XMind总结23种设计模式的结构和特点
近期通过网上学习了23种设计模式,并在Java上简单实现了代码,下图概述了个人对这23种设计模式的结构和特点的理解。练习代码:https://github.com/liaoooyx/Design-Patterns对每一种设计模式的学习过程,可以在个人文章对应设计模式的分类里找到,不再赘述。xmind文件下载:...原创 2019-04-26 18:50:54 · 1461 阅读 · 3 评论 -
【23种设计模式之】23.解释器模式
练习源码:https://github.com/liaoooyx/Design-Patterns原创 2019-04-22 18:43:59 · 156 阅读 · 0 评论 -
【23种设计模式之】16.迭代器模式
练习源码:https://github.com/liaoooyx/Design-Patterns其实就是Java中迭代器Iterator的实现,实现模式参考java集合类在网上普遍的示例中,迭代器内部是通过使用Java集合类实现的而Java集合类实现的迭代器是通过一种节点类型实现,类似于组合模式中的节点类型,这也应该式迭代器模式的最经典使用方式。...原创 2019-04-18 11:45:15 · 129 阅读 · 0 评论 -
【23种设计模式之】17.责任链模式(filter的应用)
练习源码:https://github.com/liaoooyx/Design-PatternsFilterChain属于责任链最外层的入口,该类中持有责任链中的各个处理器(集合、数组等方式),并在doFilter()方法种进行递归调用。结束条件可设置为责任链集合为空或其他条件。FilterChain和其他过滤器都继承自FIlter类,并实现其doFilter()方法。FilterChain中...原创 2019-04-18 16:58:05 · 345 阅读 · 0 评论 -
【23种设计模式之】18.命令模式
练习源码:https://github.com/liaoooyx/Design-Patterns实际上就是3个类之间的聚合关系Invoke类持有Command接口的实现类(或者实现类的集合)Command接口的实现类持有Receiver类...原创 2019-04-18 19:12:16 · 135 阅读 · 0 评论 -
【23种设计模式之】19.备忘录模式Memento(存档点、标记模式、储存与恢复)
练习源码:https://github.com/liaoooyx/Design-Patterns转载 2019-04-18 20:32:02 · 173 阅读 · 0 评论 -
【23种设计模式之】20.状态模式(避免复杂的if-else)
练习源码:https://github.com/liaoooyx/Design-Patterns转载 2019-04-18 21:39:43 · 1019 阅读 · 0 评论 -
【23种设计模式之】21.访问者模式
练习源码:https://github.com/liaoooyx/Design-Patterns转载 2019-04-19 15:57:38 · 152 阅读 · 0 评论 -
【23种设计模式之】14.模板方法(抽象类的经典用法)
练习源码:https://github.com/liaoooyx/Design-Patterns参考:https://www.cnblogs.com/stonefeng/p/5743673.html模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤的实现延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中某些步骤的具体实现。DriveTemplate是一个抽...转载 2019-04-12 16:18:18 · 181 阅读 · 0 评论 -
【23种设计模式之】13.策略模式(接口的经典用法)
练习源码:https://github.com/liaoooyx/Design-Patterns简单来说,就是让不同的算法实现同一个接口,用户自主选择不同的实现算法,并通过接口的引用进行调用。...原创 2019-04-12 15:22:57 · 151 阅读 · 0 评论 -
【23种设计模式之】10.桥接模式——示例整合,及JDBC的桥接模式
练习源码:https://github.com/liaoooyx/Design-Patterns例子1:设计模式读书笔记-----桥接模式 ——形状与颜色例子2:桥接模式(Bridge Pattern)——手机与软件例子3:桥连接模式—— 人与行为。扩展描述:人是个抽象类,分男人和女人;当人想用交通工具的时候,就让人持有一个接口类:交通工具。交通工具又有它自己的实现类:自行车...转载 2019-04-07 17:08:13 · 485 阅读 · 0 评论 -
【23种设计模式之】3.单例模式——概述及比较
参考文章:23种设计模式全解析,单例模式的八种写法比较1. 全局字段初始化```public class Singleton { private final static Singleton INSTANCE = new Singleton(); private Singleton(){} public static Singleton getInstance(...原创 2019-03-26 19:52:05 · 116 阅读 · 0 评论 -
【23种设计模式之】6.适配器模式——简单理解及应用
练习源码:https://github.com/liaoooyx/Design-Patterns概述:描述1:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。(来自:https://www.cnblogs.com/geek6/p/3951677.html)描述2:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类...原创 2019-04-04 20:40:33 · 365 阅读 · 0 评论 -
【23种设计模式之】4.建造者模式——概述及与工厂模式的比较
参考文章:https://www.cnblogs.com/kangsir/p/6653233.html , https://www.cnblogs.com/snailclimb/p/builderpattern.html练习源码:https://github.com/liaoooyx/Design-Patterns相似点:两者都将具体的、复杂的构建细节隐藏,并通过接口和抽象类实现解耦。不同...转载 2019-03-31 17:50:26 · 256 阅读 · 0 评论 -
【23种设计模式之】11.Composit 组合模式——结构图(树形结构)
练习源码:https://github.com/liaoooyx/Design-Patterns简单来说,就是持有自己的类型作为成员变量。参考1:https://www.cnblogs.com/geek6/p/3951677.html参考2:https://www.cnblogs.com/jenkinschan/p/6071933.html应用场景:树形结构的对象,如下图二...转载 2019-04-10 16:05:57 · 208 阅读 · 0 评论 -
【23种设计模式之】12.享元模式(共享池)
练习源码:https://github.com/liaoooyx/Design-Patterns参考内容:简说设计模式——享元模式:https://www.cnblogs.com/adamjwh/p/9070107.html23种设计模式全解析:https://www.cnblogs.com/geek6/p/3951677.html享元模式的主要目的是实现对象的共享,即共享池,当系统中对象...转载 2019-04-10 16:52:12 · 191 阅读 · 0 评论 -
【23种设计模式之】7.装饰器模式——概述,及与对象适配器的区别
简单来说,就是创建一个新的类,通过组合的方式,在不修改原有类的基础上,增加新的功能。与此同时,对于使用者来说,使用方法没有发生改变。组合:就是在一个类的内部,以成员变量持有另一个类的对象。从结构上,相当于适配器模式中的对象适配器。对象适配器和装饰器的本质区别在于,对象适配器用组合的方式适配一个与接口无关的类,而装饰器用组合的方式装饰一个实现接口的类。...原创 2019-04-06 14:53:39 · 186 阅读 · 0 评论 -
【23种设计模式之】8.代理模式:静态代理、jdk动态代理、cglib动态代理——概述
练习源码:https://github.com/liaoooyx/Design-Patterns代理模式中的静态代理和装饰器模式、适配器模式中的对象适配器类似,都是使用了组合的方式。区别在于,代理模式主要是起到增强方法和权限拦截的作用。代理类本身并不真正实现服务,而是同过调用委托类的相关方法,来提供特定的服务,然后在业务功能执行的前后加入一些公共的服务。静态代理参考:设计模式—代理模式、2...原创 2019-04-06 18:53:26 · 172 阅读 · 0 评论 -
【23种设计模式之】9.Facade外观模式——简述(类似于装饰器模式、对象适配器)
练习源码:https://github.com/liaoooyx/Design-Patterns核心思想依然是组合。类似于装饰器模式、适配器模式中的对象适配器。通过一个门面类(Facade),以成员变量的方式持有其他多个类(组合),这些具有相同的方法,但提供不同的功能。用户通过这个门面类进操作。参考:java设计模式之外观模式(门面模式)...转载 2019-04-06 19:31:15 · 241 阅读 · 0 评论 -
【23种设计模式之】5.原型模式,浅克隆、深克隆——概述
参考文章:设计模式(四)原型模式、设计模式读书笔记-----原型模式、渐析java的浅拷贝和深拷贝定义:可以利用过一个原型对象来指明我们所要创建对象的类型,然后通过复制这个对象=来获得与该对象一模一样的对象实例。Java原型模式:利用Cloneable接口和clone()方法。Prototype模式中实现起来最困难的地方就是内存复制操作,所幸在Java中提供了clone()方法替我们做了...原创 2019-04-01 19:29:58 · 1381 阅读 · 2 评论 -
【23种设计模式之】22.中介者模式
练习源码:https://github.com/liaoooyx/Design-Patterns转载 2019-04-19 19:32:06 · 188 阅读 · 0 评论