设计模式
ellen艾琳
这个作者很懒,什么都没留下…
展开
-
设计模式 第十节 观察者模式(Observer)
1、 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。2、 特点:一般由两个角色组成:发布者和订阅者(观察者)。观察者通常有一个回调,也可以没有。3、 应用场景:监听器、xml解析、监听器、日志收集、短信通知、邮件通知 Sp...原创 2020-09-14 22:22:26 · 190 阅读 · 0 评论 -
设计模式 第九节 装饰器模式(Decorator)
1、 是指动态地给一个对象增加一些额外的功能,同时又不改变其结构。2、 特点:注重覆盖、扩展。 装饰器和被装饰器都实现同一个接口,主要目的是为了扩展之后依旧保留OOP 关系(同宗同源)3、 应用场景:数据源自动切换、IO 流包装、简历包装4、 优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能 扩展功能的方式比较灵活; 每一个装饰器相互独立,需要修改时不会互相影响。 缺点:多层装饰比较复杂...原创 2020-09-14 22:07:10 · 128 阅读 · 0 评论 -
设计模式 第八节 适配器模式(Adapter)
1、 将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。2、 特点:注重兼容、转换。适配者与被适配这之间没有层级关系,也没有必然联系。3、 应用场景:编码解码、一拖三充电头、HDMI 转VGA、Type-C 转USB Spring AOP 模块对BeforeAdvice、AfterAdvice、ThrowsAdvice 三种通知类型的支持实际上是借助适配器模式来实现的4、 优点: 可以让两个没有关联的类一起运行,起着中间转换的作用; ...原创 2020-09-14 21:43:51 · 243 阅读 · 0 评论 -
设计模式 第十一节 责任链模式(Chain of Responsibility)
1、 责任链模式为某个请求创建一个对象链,每个对象依次检查此请求,并对其进行处理,或者将它传给链中的下一个对象。2、 应用场景:经常用于过滤器,拦截器,事件( 鼠标键盘事件,冒泡事件等 )等场景。Servlet 中的过滤器 Filter 就是典型的责任链模式3、 优点 请求者和接收者解耦; 可以动态地增加或减少责任链上的对象,或者修改顺序。 缺点 调用者不知道请求可能被哪些责任链对象处理,不利于排错; 用户请求可能被责任链中途拦截,...原创 2020-09-14 15:43:19 · 105 阅读 · 0 评论 -
设计模式 第七节 模板方法模式(Template Method)
1、 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 Spring ORM 数据模型2、 特点:执行流程固定,但中间有些步骤有细微差别(运行时才确定)。可实现批量生产。3、 应用场景:4、 优点: 提高代码复用性:将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中; 实现了反向控制:通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为...原创 2020-09-10 21:45:51 · 96 阅读 · 0 评论 -
设计模式 第六节 策略模式(Strategy)
1、 是指定义一系列算法,将每个算法都封装起来,并且使他们之间可以相互替换。 Spring 中在实例化对象的时候用到Strategy 模式,在SimpleInstantiationStrategy 有使用。2、 特点:最终执行结果是固定的。执行过程和执行逻辑不一样。3、 优点:遵循了开闭原则,扩展性良好。 缺点:随着策略的增加,对外暴露越来越多。4、 应用场景:更换主题public interface IFruit { void buyFruit();}p...原创 2020-09-10 21:42:10 · 117 阅读 · 0 评论 -
设计模式 第五节 代理模式(Proxy)
1、 代理模式的作用是为其他对象提供一种代理以控制对这个对象的访问。 在某些情况下一个客户对象不想或不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用2、 应用场景:AOP实现,拦截器、中介、延迟加载3、 代理模式分类:静态代理、动态代理 在静态代理中,被代理的类是固定的,一个代理类对应一个被代理类。 动态代理就是被代理的类是代码运行时指定的。JDK 为我们提供了一种动态代理的实现,通过实现 InvocationHandler 接口来实现动态代理...原创 2020-09-09 20:13:45 · 140 阅读 · 0 评论 -
设计模式 第四节 原型模式(Prototype)
1、 应用场景:从一个对象再创建另外一个可定制的对象,不需要知道任何创建的细节。就是Java 中的克隆技术。新的对象具备原型对象的特点,效率高(避免了重新执行构造过程步骤) 如:DTO、VO、POJO、Entity2、 特点: 首先有一个原型。 数据内容相同,但对象实例不同(完全两个个体)。3、 java用clone来实现原型模式,还可以用反射、循环来实现...原创 2020-09-09 20:06:35 · 70 阅读 · 0 评论 -
设计模式 第三节 单例模式(Singleton)
单例模式(Singleton) 1、 使用场景:保证一个类仅有一个实例,并提供一个访问它的全局访问点。Spring 中的单例模式提供了全局的访问点BeanFactory。Spring 下默认的Bean 均为单例。 工厂本身是单例、配置文件、日历、获取数据源、IOC 容器。Listener自身是单例 2、 分类:饿汉式、懒汉式、注册式、序列化。一般采用饿汉式,若对资源十分在意可以采用静态内部类,不建议采用懒汉式及双重检测。 饿汉式 (线程安全---...原创 2020-09-09 20:01:43 · 102 阅读 · 0 评论 -
设计模式 第二节 工厂模式(Factory)
设计模式第二节——工厂模式(Factory) 1、 使用场景:系统更换皮肤、spring-BeanFactory 简单工厂用于创建单一产品,经常和单例模式一起使用,例如用简单工厂创建缓存对象( 文件缓存 ),某天需要改用 Redis 缓存,修改工厂即可。 Spring 中的BeanFactory 就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean 对象 抽象工厂常用于创建一整个产品族,而不是单一产品。通过选择不同的工厂来达到目的,其优...原创 2020-09-05 22:18:21 · 128 阅读 · 0 评论 -
设计模式 第一节
设计模式第一节1、 设计模式就是在针对编码过程中遇到的问题总结出来的最佳解决方案。 面向对象的程序应该具有可维护性、代码可复用性、扩展性及灵活性。 设计模式就是指导你如何写出可维护、可复用、可扩展及灵活的代码。2、 设计模式分类 设计模式总共有 23 种,总体来说可以分为三大类: 1)创建型模式( Creational Patterns ) 关注于对象的创建,同时隐藏创建逻辑 工厂模式、抽象工厂模式、单例模式、建造者模式、原...原创 2020-09-05 22:08:25 · 137 阅读 · 0 评论