首先我们看下各个模式之间的关系图,下面这张图是网上比较典型的一个类图关系: 从上面的类图之间可以看出,学习设计模式或者说学懂完全理解所有的设计模式还是挺难的,只能说不断的重复学习,不断的去领悟才是唯一的方法,当然不排除有些人是天才看一篇就学会了,可惜鄙人不是,所以必须不断重复学习来加深自己的理解。个 ...
分类:
编程语言 时间:
2020-07-11 22:34:46
阅读次数:
54
策略模式的结构 这个模式涉及到三个角色: 环境(Context)角色:持有一个 Strategy 类的引用。抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。 ...
设计模式 设计模式的目的 代码重用性 可读性 可拓展性(可维护性) 可靠性 提高程序对外体现高内聚 低耦合 设计模式的原则 单一职责原则 降低类的复杂度一个类只负责一项职责 提高类的可读性,可维护性。 降低变更引起的风险 通常情况下,遵守单一职责原则,除非逻辑足够简单,可在代码级反单一职责原则,一个 ...
分类:
其他好文 时间:
2020-07-11 19:17:07
阅读次数:
62
观察者模式:在对象之间定义了一对多的依赖,当一个对象改变状态,依赖它的对象会收到通知并自动更新。其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 观察者模式应用场景 Spring的ApplicationEvent、Zk事件通知节点、消息订阅通知、安卓开发 ...
分类:
其他好文 时间:
2020-07-11 18:56:51
阅读次数:
75
动态代理基于什么原理?谈谈java反射机制。 代理模式是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个真实对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。 反射机制是java 语言提供的一种基础功能,赋予程序在运行时自省的能力。通 ...
分类:
编程语言 时间:
2020-07-11 12:53:57
阅读次数:
65
代理模式: 为其他对象提供一种代理以控制对这个对象的访问。 1.为什么使用代理模式 中介隔离:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。 开闭原则,增加功能代理类除了是客户类和委托类的中介之外 ...
分类:
其他好文 时间:
2020-07-11 12:38:20
阅读次数:
54
@ 什么是装饰器模式? 装饰器模式的定义: Attach additional responsibilities to an object dynamically keeping the same interface.Decorators provide a flexible alternative ...
分类:
其他好文 时间:
2020-07-11 00:24:31
阅读次数:
57
闲谈设计模式 Intro 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 了解这些前辈们总结出来的经验有助于帮助你写出来更优秀的代码,帮助你写出可扩展、可读、可维护的高质量代码。 在极客时间里推出了数据结构和设计模式的王争说了一句话,如果说“ ...
分类:
其他好文 时间:
2020-07-11 00:21:46
阅读次数:
80
定义 责任链,顾名思义,就是用来处理相关事务责任的一条执行链,执行链上有多个节点,每个节点都有机会(条件匹配)处理请求事务,如果某个节点处理完了就可以根据实际业务需求传递给下一个节点继续处理或者返回处理完毕 案例 客户端输入校验,需要多个校验步骤,比如sql注入校验、违禁词校验、js校验 客户端调用 ...
分类:
其他好文 时间:
2020-07-11 00:20:52
阅读次数:
66
封装变化之对象创建 在对象创建的过程中,经常会出现的一个问题就是通过显示地指定一个类来创建对象,从而导致紧耦合。这是因为创建对象时指定类名将使你受特定实现的约束而不是特定接口的约束。这会使未来的变化更加复杂。要避免这种情况,就应该间接地创建对象。 这种紧耦合的问题很大程度是由new关键字带来的,由于 ...
分类:
其他好文 时间:
2020-07-10 21:30:25
阅读次数:
68