![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 95
天空鸟_时光不老
这个作者很懒,什么都没留下…
展开
-
模板方法模式
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类在不改变算法结构的情况下,重新定义算法中的某些步骤。 模板方法的基类会被定义成抽象类,里面的方法一般会被定义成final类型,不让子类修改算法顺序。方法全依赖子类来提供某些或所有步骤的实现。public abstract class CaFfeineBeverage { /** * 下面就是我们原创 2017-11-19 14:17:06 · 402 阅读 · 2 评论 -
一天一模式之14组合模式
初识组合模式定义将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用 户对单个对象和组合对象的使用具有一致性。结构和说明 初识组合模式 - Component:抽象的组件对象,为组合中的对象声明接口,让客户端可以通过这个接 口来访问和管理整个对象结构,可以在里面为定义的功能提供缺省的实现。、 Leaf:叶子节点对象,定义和实现叶子对象的行为,不再包含...原创 2018-05-29 15:22:55 · 238 阅读 · 0 评论 -
一天一模式之15模板方法模式
初识模板方法模式定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使 得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。结构和说明 - AbstractClass:抽象类。用来定义算法骨架和原语操作,在这个类里面,还可以提 供算法中通用的实现。 - ConcreteClass:具体实现类。用来实现算法骨架中的某些步骤,完成跟特定子类 相...原创 2018-05-29 15:53:28 · 300 阅读 · 0 评论 -
一天一模式之16策略模式
初识策略模式定义定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本 模式使得算法可独立于使用它的客户而变化。结构和说明Strategy:策略接口,用来约束一系列具体的策略算法。Context使用这个接口来调用 具体的策略实现定义的算法。ConcreteStrategy:具体的策略实现,也就是具体的算法实现。Context:...原创 2018-05-29 15:54:48 · 312 阅读 · 0 评论 -
一天一模式之17状态模式
本节课程概览学习状态模式一:初识状态模式 包括:定义、结构、参考实现二:体会状态模式 包括:场景问题、不用模式的解决方案、使用模式的解决方案三:理解状态模式 包括:认识状态模式、状态的维护和转换控制 、使用数据库来维护状态 、 模拟工作流 、状态模式的优缺点四:思考状态模式 包括:状态模式的本质、何时选用初识状态模式定义允许一个对象在其内部状态改...原创 2018-05-29 15:57:03 · 359 阅读 · 0 评论 -
一天一模式之18备忘录模式
本节课程概览学习备忘录模式一:初识备忘录模式包括:定义、结构、参考实现二:体会备忘录模式包括:场景问题、不用模式的解决方案、使用模式的解决方案三:理解备忘录模式包括:认识备忘录模式、结合原型模式 、离线存储 、再次实现可撤销操作、备忘录模式的优缺点四:思考备忘录模式包括:备忘录模式的本质、何时选用初识备忘录模式定义...原创 2018-05-29 15:57:51 · 399 阅读 · 0 评论 -
一天一模式之19享元模式
本节课程概览学习享元模式一:初识享元模式包括:定义、结构、参考实现二:体会享元模式包括:场景问题、不用模式的解决方案、使用模式的解决方案三:理解享元模式包括:认识享元模式、不需要共享的享元实现、对享元对象的管理、 享元模式的优缺点四:思考享元模式包括:享元模式的本质、何时选用初识享元模式定义运用共享技术有效地支持大量细粒...原创 2018-05-29 15:59:20 · 281 阅读 · 0 评论 -
一天一模式之20解释器模式
本节课程概览学习解释器模式一:初识解释器模式包括:定义、结构、参考实现二:体会解释器模式包括:场景问题、不用模式的解决方案、使用模式的解决方案三:理解解释器模式包括:认识解释器模式、读取多个元素或属性的值、解析器、 解释器模式的优缺点四:思考解释器模式包括:解释器模式的本质、何时选用初识解释器模式定义给定一个语言,定义它...原创 2018-05-29 16:00:42 · 877 阅读 · 0 评论 -
一天一模式之21装饰器模式
本节课程概览学习装饰模式一:初识装饰模式包括:定义、结构、参考实现二:体会装饰模式包括:场景问题、不用模式的解决方案、使用模式的解决方案三:理解装饰模式包括:认识装饰模式、Java中的装饰模式应用、装饰模式和AOP 、 装饰模式的优缺点四:思考装饰模式包括:装饰模式的本质、何时选用初识装饰模式定义动态地给一个对象添加一...原创 2018-06-15 13:30:46 · 315 阅读 · 0 评论 -
一天一模式之22桥接模式
本节课程概览学习桥接模式一:初识桥接模式包括:定义、结构、参考实现二:体会桥接模式包括:场景问题、不用模式的解决方案、使用模式的解决方案三:理解桥接模式包括:认识桥接模式、谁来桥接、典型例子-JDBC 、 广义桥接-Java中无处不桥接 、桥接模式的优缺点四:思考桥接模式包括:桥接模式的本质、对设计原则的体现、何时选用初识桥接模...原创 2018-06-15 13:31:45 · 458 阅读 · 1 评论 -
一天一模式之23访问者模式
本节课程概览学习访问者模式一:初识访问者模式包括:定义、结构、参考实现二:体会访问者模式包括:场景问题、不用模式的解决方案、使用模式的解决方案三:理解访问者模式包括:认识访问者模式、操作组合对象结构 、谁负责遍历所有元素对象 、 访问者模式的优缺点四:思考访问者模式包括:访问者模式的本质、何时选用初识访问者模式定义表示...原创 2018-06-15 13:32:55 · 295 阅读 · 0 评论 -
一天一模式之24 相关模式比较
本节课程概览相关模式关于相关模式的辨析、比较、选择以及组合使用等。提前说明模式选择的方法1:模式的功能——看是否能解决问题2:模式的本质——看模式是否主要用来解决这类问题3:模式的适用程度——看使用这个模式是否贴切,看是否需要变形4:应用模式的复杂程度——看使用模式带来的开发复杂度是否可接受或可控5:应用模式的代价——看使用模式的代价是否可接受或可控,如:...原创 2018-06-15 13:33:43 · 231 阅读 · 0 评论 -
设计模式之工厂设计模式
设计模式之工厂设计模式一、Spring 中常用的设计模式1、我们通常说的 23 中经典设计模式可以通过下表一目了然:分类 设计模式创建型工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、原型模式(Prototype)、单例模式(Singleton)结构型适配器模式(Adapter)、桥接模式(Bridge)...原创 2019-07-28 23:08:24 · 190 阅读 · 0 评论 -
设计模式之单例模式
设计模式之单例模式应用场景:保证一个类仅有一个实例,并提供一个访问它的全局访问点。模式分析Spring 中的单例模式完成了后半句话,即提供了全局的访问点 BeanFactory。但没有从构造器级别去控制单例,这是因为 Spring 管理的是是任意的 Java 对象。 Spring 下默认的 Bean 均为单例。常用单例模式写法:饿汉式、懒汉式、注册式、序列化。代码演示:饿汉式单例...原创 2019-07-30 12:23:48 · 161 阅读 · 0 评论 -
设计模式之原型模式
设计模式之原型模式介绍应用场景:原型模式就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。所谓原型模式,就是 Java 中的克隆技术,以某个对象为原型。复制出新的对象。显然新的对象具备原型对象的特点,效率高(避免了重新执行构造过程步骤)。代码演示浅拷贝/** * 浅拷贝 */public class Prototype implements Clon...原创 2019-07-30 16:24:11 · 125 阅读 · 0 评论 -
一天一模式之13迭代器模式
初识迭代器模式定义提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的 内部表示。结构和说明Iterator:迭代器接口。定义访问和遍历元素的接口。ConcreteIterator:具体的迭代器实现对象。实现对聚合对象的遍历,并跟踪遍历时的当前位置。Aggregate:聚合对象。定义创建相应迭代器对象的接口。Conc...原创 2018-05-29 14:01:00 · 250 阅读 · 0 评论 -
设计模式
设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式。...原创 2018-05-28 14:29:51 · 170 阅读 · 0 评论 -
一天一模式之12命令模式
初识命令模式定义将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数 化;对请求排队或记录请求日志,以及支持可撤销的操作。结构和说明Command:定义命令的接口,声明执行的方法。ConcreteCommand:命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者 的功能来完成命令要执行的操作。Receiver:...原创 2018-05-28 13:10:02 · 303 阅读 · 0 评论 -
迭代器和组合模式
迭代器模式迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示 迭代器模式让我们能游走于聚合内的每一个元素,而又不暴露其内部的表示。 把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。代码/** * 菜单类 * 定义 菜单名称、描述、是否为素食和价格 * */public class MenuItem { String原创 2017-11-19 23:26:36 · 277 阅读 · 0 评论 -
单一模式
单一模式一个类应该只有一个引起变化的原因如果一个类具有两个改变的原因,那么这会使得将来该类变化机率上升,而当它真的改变时,你的设计中同时有两个方面将会受到应该。==类的每个责任都有改变的潜在区域。超过一个责任,意味着超过一个改变的区域。== ==这个原则告诉我们,尽量让没有类保持单一责任==内聚用来度量一个类或模块紧密地达到单一目的或责任。当一个模块或一个类被设计成只支持一组相关的功能时,我们说它原创 2017-11-21 21:54:16 · 539 阅读 · 0 评论 -
状态模式
状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。 这个描述中的第一部分描述附有许多含义,是吧?因为这个模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,我们知道行为会随着内部状态而改变。要点状态模式允许一个对象基于内部状态而拥有不同的行为。和程序状态机(PSM)不同,状态模式用类代表状态。Context会将行为委托给当前状态。通过将每个状态封装进一个类原创 2017-12-02 21:28:51 · 124 阅读 · 0 评论 -
组合模式
组合模式允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。这个模式能够创建一个树形结构,在同一个结构中处理嵌套菜单和菜单项组。通过将菜单和项放在相同的结构中,我们创建了一个“整体/部分”层次结构,即由菜单和菜单项组成的对象树,但是可以将它视为一个整体,像是一个大菜单。 这是一个树形结构graph LRnote-->leat1note--原创 2017-11-24 22:11:23 · 203 阅读 · 0 评论 -
一天一模式之2简单工厂
初识简单工厂提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。结构和说明 - Api:定义客户所需要的功能接口 - Impl:具体实现Api的实现类,可能会有多个 - Factory:工厂,选择合适的实现类来创建Api接口对象 - Client:客户端,通过Factory去获取Api接口对象,然后面向Api接口编程...原创 2018-03-14 19:05:06 · 313 阅读 · 0 评论 -
一天一模式之3外观模式
初识外观模式定义为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层 接口,这个接口使得这一子系统更加容易使用。结构和说明 - Facade:定义子系统的多个模块对外的高层接口,通常需要调用内部多个模块, 从而把客户的请求代理给适当的子系统对象。 - 模块:接受Facade对象的委派,真正实现功能,各个模块之间可能有交互。- 注意,Faca...原创 2018-03-15 15:30:31 · 238 阅读 · 0 评论 -
一天一模式之4适配器模式
初识适配器模式定义将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由 于接口不兼容而不能一起工作的那些类可以一起工作。结构和说明 - Client:客户端,调用自己需要的领域接口Target。 - Target:定义客户端需要的跟特定领域相关的接口。 - Adaptee:已经存在的接口,但与客户端要求的特定领域接口不一致,需要被适配。 - Adapt...原创 2018-03-16 10:48:11 · 266 阅读 · 0 评论 -
一天一模式之5单例模式
初识单例模式定义保证一个类仅有一个实例,并提供一个访问它的全局访问点。结构和说明Singleton:负责创建Singleton类自己的唯一实例,并提供一个getInstance的方法, 让外部来访问这个类的唯一实例。示例代码单例示例 懒汉式package cn.javass.dp.singleton.example2;/** ...原创 2018-03-18 19:34:37 · 259 阅读 · 0 评论 -
一天一模式之6工厂方法模式
初识工厂方法模式定义定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。 结构和说明Product:定义工厂方法所创建的对象的接口,也就是实际需要使用的对象的接口ConcreteProduct:具体的Product接口的实现对象。Creator:创建器,声明工厂方法ConcreteCreator:具体的...原创 2018-03-23 10:21:19 · 256 阅读 · 0 评论 -
一天一模式之1生成器模式
初识生成器模式定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表现形式。Builder生成器接口,定义创建一个Product对象所需的各个部件的操作。ConcreteBuilder:具体的生成器实现,实现各个部件的创建,并负责组装Product对象的各个 部件,同时还提供一个让用户获取组装完成后的产品对象的方法。Director...原创 2018-03-13 15:33:58 · 245 阅读 · 0 评论 -
一天一模式之7抽象工厂模式
初识抽象工厂模式定义提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。结构和说明AbstractFactory:抽象工厂,定义创建一系列产品对象的操作接口。ConcreteFactory:具体的工厂,实现抽象工厂定义的方法,具体实现一系列产品对象的创建。AbstractProduct:定义一类产品对象的接口。Co...原创 2018-05-25 14:23:03 · 236 阅读 · 0 评论 -
一天一模式之8中介者模式
初识中介者模式定义用一个中介对象来封装一系列的对象交互。中介者使得各对象不需要显式 地相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。结构和说明 - Mediator: 中介者接口。在里面定义各个同事之间交互需要的方法,可以是公共的通 讯方法,比如changed方法,大家都用,也可以是小范围的交互方法。 - ConcreteMediator: 具体...原创 2018-05-25 14:24:09 · 453 阅读 · 0 评论 -
一天一模式之9原型模式
初识原型模式定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。结构和说明 - Prototype:声明一个克隆自身的接口,用来约束想要克隆自己的类,要求它们都要 实现这里定义的克隆方法。 - ConcretePrototype:实现Prototype接口的类,这些类真正实现克隆自身的功能 - Client:使用原型的客户端,首先要获取到原型实例对象,...原创 2018-05-25 14:25:55 · 319 阅读 · 0 评论 -
一天一模式之10代理模式
初识代理模式定义为其它对象提供一种代理以控制对这个对象的访问。结构和说明Proxy:代理对象,通常具有如下功能:1:实现与具体的目标对象一样的接口,这样就可以使用代理来代替具体的目标对象2:保存一个指向具体目标对象的引用,可以在需要的时候调用具体的目标对象3:可以控制对具体目标对象的访问,并可能负责创建和删除它Subject:目标接口...原创 2018-05-25 14:27:15 · 212 阅读 · 0 评论 -
一天一模式之11观察者模式
初识观察者模式定义定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所 有依赖于它的对象都得到通知并被自动更新。结构和说明Subject:目标对象,通常具有如下功能: - (1)一个目标可以被多个观察者观察 - (2)目标提供对观察者注册和退订的维护 - (3)当目标的状态发生变化时,目标负责通知所有注册的、有效的观察者Observe...原创 2018-05-28 13:07:06 · 592 阅读 · 0 评论 -
设计模式之代理模式
设计模式之代理模式应用场景:为其他对象提供一种代理以控制对这个对象的访问。从结构上来看和 Decorator 模式类似,但 Proxy 是控制,更像是一种对功能的限制,而 Decorator 是增加职责。Spring 的 Proxy 模式在 AOP 中有体现,比如 JdkDynamicAopProxy 和 Cglib2AopProxy。代理实战演示静态代理// 定义需要代理的功能接口...原创 2019-08-02 11:30:55 · 156 阅读 · 0 评论