设计模式
文章平均质量分 82
name_s_Jimmy
每天坚持学习10小时,坚持锻炼1小时。吃好睡好。
展开
-
设计模式第10式:状态模式
我们遇到状态机模型,常常会理不清“状态”和“行为”的关系。状态模式就是专门解决这个应用场景的,它通过改变对象内部的状态来帮助对象控制自己的行为。状态模式允许对象在内部状态改变时改变它自身的行为,对象看起来好像修改了它的类。这个模式将状态封装成独立的类,并将动作委托给当前状态对象从用户的视角来看,如果使用的对象能否完全改变自己的行为,那么这个对象应该是从别的类实例化而来的。然而,状态模式仅通过组合不同的状态对象来造成改变类行为的假象。原创 2023-03-13 10:41:16 · 658 阅读 · 0 评论 -
设计模式第9式:迭代器模式
我们有很多种方法可以把对象集中到一个集合中,比如列表、堆栈、散列表中。每种集合都有自己的特点和使用时机,但都有一个共同的需求:用户想要遍历这些对象。同时我们并不想用户看到集合的实现,本文将讲解如何让用户遍历对象又无法窥视存储对象的方式。迭代器模式很好,一方面提供了统一简洁的集合遍历方式,另一方面避免暴露集合内部结构。集合遍历方式也在持续升级,后面JDK1.5又推出了“foreach”语法糖。Java8新特性:集合遍历forEach方法,我们甚至不用请求迭代器了。原创 2023-03-11 17:14:45 · 800 阅读 · 1 评论 -
设计模式第8式:模板方法模式
模板方法相对比较简单,适用的场景也比较固定。如果一类算法(方法)中有一些步骤是固定的,另一部分步骤是变化的,那么我们可以将算法的步骤抽象成模板放在父类中,固定的步骤实现在父类中,变化的步骤设置为抽象方法由子类实现。我们在使用的时候使用子类即可。模板方法模式虽然简单,但是在Java和Spring源码中大量使用,尤其是在Spring这种类继承关系很深的框架中,使用模板方法将功能方法放在父类,变化的方法放在子类,可以有效减少重复代码。模板方法模式在父类方法中定义一个算法的骨架,而将一些步骤延迟到子类中。原创 2023-02-11 18:00:53 · 362 阅读 · 0 评论 -
设计模式第7式:适配器模式与外观模式
前面讲的装饰者模式是将对象包装起来,并赋予新的职责。适配器模式同样是包装对象,但是目的不一样,它要让某些对象的接口看起来不像自己而是像别的东西。为什么要这样做,因为可以将类的接口转换成想要的接口。还会讲一个适配器的变种模式:外观模式,它将对象包装起来以简化其接口。适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器模式可以让原本不兼容的类可以合作。适配器模式有很好的OO设计原则:使用对象组合。适配器模式组合对象,改变老功能行为以适配新的接口标准;原创 2023-02-11 17:11:18 · 960 阅读 · 0 评论 -
设计模式第6式:命令模式
命令模式关注这样一种场景:指令发布者无需关注指令是怎么执行的,只需要指定具体的执行者,具体的指令由执行者来完成。命令模式将指令发布动作和指令执行动作解耦。我在刚开始学习命令模式的时候,比较困惑它的使用场景。它不像之前讲的工厂模式,观察者模式那样有明确的使用场景。其实可以将命令模式应用在这个场景就比较好理解了:软件项目经理不可能完成所有的开发任务,他将软件开发的不同阶段设置为不同的指令,比如软件设计指令、软件开发指令、软件测试指令,然后将不同的指令指定不同的人员。原创 2023-02-02 17:51:43 · 430 阅读 · 0 评论 -
设计模式第5式:装饰器模式
当我们初学编程时,扩展程序功能一般习惯使用继承,使用继承有一些缺点,那就是容易造成类爆炸,并且容易继承一些不需要的特性。当我们学习完装饰器模式后,会发现善用组合会有比继承更好的效果。装饰者模式适用于这样一种场景:有一些类提供基础的功能,还有一些类要增强这些基础类的功能。于是我们将增强功能类叫做装饰者,装饰者持有一个基础类型的引用,利用组合的形式对基础类进行功能增强。原创 2023-01-30 21:09:34 · 547 阅读 · 0 评论 -
设计模式第4式:观察者模式&Spring事件监听机制
观察者模式是一种非常重要的设计模式,在JDK和Spring源码中使用非常广泛,而且消息队列软件如kafka、rocketmq等也应用了观察者模式。那么我们就很有必要学习一下观察者模式了。随后我们来看看大名鼎鼎的事件监听机制,它是基于观察者模式的,但是是由具体的事件来驱动系统的运行,事件监听机制在Spring源码中占有非常重要的位置。我们先从改造一个实际案例来引出观察者模式,随即又在观察者模式上进一步引出事件发布机制,接着我们又分别从源码角度深度解析了事件发布机制的原理。原创 2023-01-28 19:05:55 · 1224 阅读 · 0 评论 -
设计模式第3式:策略模式
策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。原创 2023-01-03 20:42:43 · 496 阅读 · 0 评论 -
设计模式第2式--工厂模式
工厂模式有3种简单工厂模式工厂方法模式抽象工厂模式简单工厂模式简单工厂的定义:定义一个创建对象的类,该类封装了实例化对象的行为。在实际开发中,如果我们遇到了需要大量创建某种、某类、某批对象时,就会用到工厂模式。工厂模式更多的是一种理念,即将类的创建和使用分开,下面通过一个披萨订购的小案例说明简单工厂模式的这种理念。package factory.simplefactory;/** * 设计一个披萨商店项目,可完成Pizza订购功能 * * 要求:1、便于扩展pizza的种类 *原创 2020-06-21 22:53:09 · 256 阅读 · 0 评论 -
设计模式第1式--单例模式
单例模式有8种写法单例模式介绍单例的8种写法饿汉式2种懒汉式3种双重检查1种静态内部类1种枚举1种单例模式介绍所谓单例模式,就是采用一定方式,保证在整个系统中,对于某个类只有一个对象存在,且该类只提供一个获取对象实例的方法。比如Hibernate的SessionFactory,他充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够了,这就会使用到单例模式单例的8种写法下面是8种写法,及每种原创 2020-06-21 00:44:33 · 194 阅读 · 0 评论