- 博客(11)
- 收藏
- 关注
原创 结合JDK,Spring,Mybatis,Netty,Tomcat,Dubbo等经典框架的源码对设计模式展开分析(十一)
迭代器模式(Iterator Pattern)定义:又叫做游标模式,它提供一种按顺序访问集合对象元素的方法,可以用来为不同的容器提供一致的遍历行为本质时把集合对象的迭代行为抽象到迭代器中,提供统一的访问接口,而不用关心容器内元素的组成结构应用场景:访问一个集合对象的内容而无需暴露它的内容表示,为遍历不同发集合结构提供一个同一个访问接口角色:抽象迭代器,具体迭代器,抽象容器,具体容器通用写法:package com.IteratorPattern;/** * @author ya
2022-05-22 22:41:06
185
原创 结合JDK,Spring,Mybatis,Netty,Tomcat,Dubbo等经典框架的源码对设计模式展开分析(十)
策略模式(Strategy Pattern)定义:又叫做政策模式,他将定义的算法族封装起来,让他们可以互相替换,让算法的扩展独立于使用它的用户应用场景:比如你有一个产品类实现了一个功能,这个功能比较复杂,需要依靠一个可以抽象出来的算法(方法),这个算法经常需要扩展,那么就可以用策略模式,产品类依赖于抽象的算法类,而产品的功能调用具体注入的算法(策略)的抽象(抽象策略)角色:上下文角色,抽象策略角色,具体策略角色策略模式在框架中的应用:JDK中的比较器Comparator接口,compare
2022-05-19 23:24:51
230
原创 结合JDK,Spring,Mybatis,Netty,Tomcat,Dubbo等经典框架的源码对设计模式展开分析(九)
行为形设计模式委派模式(Delegate Pattern)定义:又叫委托模式,一种面向对象的设计模式,允许对象组合实现与继承相同的代码重用,是一种特殊的静态代理模式,但是代理模式注重过程,而委派模式注重结果,委派者要维护被委托者的引用应用场景:需要实现表示层与业务层之间的松耦合,需要封装一层服务查找和调用角色:抽象任务角色,委派者角色,具体任务角色通用写法:package com.DelegatePattern;import java.util.HashMap;import j
2022-05-18 23:23:19
234
原创 结合JDK,Spring,Mybatis,Netty,Tomcat,Dubbo等经典框架的源码对设计模式展开分析(八)
桥接模式(Bridge Pattern)定义:指将抽象部分与具体实现部分分离,使他们都可以独立地变化主要目的是通过组合的方式建立两个类之间的联系,而不是继承应用场景:在抽象和具体实现之间需要增加更多灵活性的场景,一个类存在多个独立变化的维度时,常见的使用场景就是替换继承,因为使用继承时,常会出现父类代码对子类代码进行入侵,所以设计模式中,有一个原则就是优先使用组合/聚合,而不是继承简化理解例子:假如有一个抽象产品类,这个产品拥有两种随时可能进行拓展的属性或行为,以至于假如当你初始设计时考虑的并
2022-05-16 23:02:38
155
原创 结合JDK,Spring,Mybatis,Netty,Tomcat,Dubbo等经典框架的源码对设计模式展开分析(七)
组合模式(Composite Pattern)定义:组合模式让你可以优化处理递归或分级数据结构,通过将单个对象(叶子节点)和组合对象(树枝节点)用相同的接口表示,使得客户对单个对象和组合对象的使用具有一致性(例如文件夹和文件,父菜单和子菜单)应用场景:希望客户端可以忽略组合对象与单个对象的差异,对象层次具备整体和部分,呈树形结构通用实现方式:定义一个抽象组件类(或接口,决定于实现类中行为的差异性),包含树枝和叶子的共有属性和方法,这些方法对外开放,有基础实现,叶子类和树枝类均继承自该组件,
2022-05-15 21:16:28
194
原创 结合JDK,Spring,Mybatis,Netty,Tomcat,Dubbo等经典框架的源码对设计模式展开分析(六)
门面模式/外观模式(Facade Pattern)定义:提供一个统一的接口,用来访问子系统中的一群接口,主要特征是定义了一个高层接 口,让子系统的使用更容易。其实在开发工作中基本上都会无意识的自觉的用到这种方式适用场景:为复杂的模块或子系统提供一个简洁的供外界访问的接口,系统提高子系统的独 立性时。在源码中的应用:spring JDBC模块下的JdbcUtils类,采用外观模式的方式封装了JDBC相关的所有操作MyBatis中的Configuration类中方法对JDBC中
2022-05-14 09:28:35
174
原创 结合JDK,Spring,Mybatis,Netty,Tomcat,Dubbo等经典框架的源码对设计模式展开分析(五)
结构型设计模式代理模式(Proxy Pattern)定义:为其他对象提供一种代理,以控制这个对象的访问,在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端与目标对象之间起到中介的作用应用目的:保护目标对象,动态增强目标对象,代理模式分为静态代理和动态代理角色:抽象目标角色,目标角色,代理角色代理对象通过实现和目标对象所实现的接口,然后在实现类中,持有目标对象,于是在代理类中对抽象方法实现,并在调用目标对象的行为的基础上,增加自己的行为增强通用静态代理方式实现
2022-05-08 22:57:30
324
原创 结合JDK,Spring,Mybatis,Netty,Tomcat,Dubbo等经典框架的源码对设计模式展开分析(四)
建造者模式(Builder Pattern)定义:将一个复杂对象的创建过程与它的表示分离开来,使得同样的创建过程可以创建不同的表示,即尽量做到代码的复用,与工厂方法有点类似,但是建造者适用的是对象的创建相对复杂的场景,可以抽取出抽象的创建过程,然后交给具体的实现类自定义创建流程,使得同样的行为(方法)可以创建出不同的产品应用场景:比如买一台车,同一个型号有不同的配置,不同配置的车都是出厂与同一个品牌角色:产品,抽象建造者,建造者,调用者实际场景应用:比方说一个产品为汽车,一辆完整的汽车有车
2022-05-07 23:09:01
289
原创 结合JDK,Spring,Mybatis,Netty,Tomcat,Dubbo等经典框架的源码对设计模式展开分析(三)
原型模式(Prototype Pattern)定义:指原型实例指定创建对象的类型,并且通过复制这些原型创建的对象,核心在于以系统中已存在的对象为原型,直接基于内存二进制流进行复制,不需要再经历对象初始化过程,提升了性能。应用场景:对象创建成本较大,系统中大量使用该类对象各各调用者又都需要使用到它的属性的初始化值,并进行改动角色:抽象原型规定复制接口(Object 中的clone()方法),具体原型实现该接口Object源码中protected native Object clone()
2022-05-07 23:00:36
166
原创 结合JDK,Spring,Mybatis,Netty,Tomcat,Dubbo等经典框架的源码对设计模式展开分析(二)
单例模式(Singleton Pattern)定义:确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点应用场景:例数据库连接池,ServletContext,Spring框架中的ApplicationContext需要频繁创建的一些类,使用该模式可以降低系统的内存,GC压力实例化代价昂贵的对象频繁进行数据库访问和IO操作的对象使用方式:私有化构造方法,提供一个静态全局访问方法来返回对象,保证对象只会实例化一次分支实现:饿汉式:对象初始化在类加载阶段就进行绝对的..
2022-05-05 22:25:30
508
原创 结合JDK,Spring,Mybatis,Netty,Tomcat,Dubbo等经典框架的源码对设计模式展开分析(一)
创建型设计模式一.简单工厂模式(Simple Factory Pattern)别名静态工厂方法模式定义:抽象封装了对象创建的逻辑。适合在对象创建逻辑复杂的情况下使用产品类有公用父接口简单工厂方法中集中对象创建逻辑,采用静态方法的方式这样在对产品类进行扩展时,不会影响客户端代码,工厂方法中的对象创建方式可以采用反射的方式来避免频繁修改,靠近于开闭原则简单工厂方法在JDK中的应用:Calender.getInstance()方法优点:结构简单方便调用,工厂和产品的职责区分..
2022-05-04 21:26:27
469
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅