![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
『梧桐雨』
这个作者很懒,什么都没留下…
展开
-
观察者模式
观察者模式: 观察者订阅事件源,当事件源状态发生改变时,自动通知订阅的观察者,并触发观察者预定动作。 事件源: package com.example.multithread.pattern; import java.util.ArrayList; import java.util.List; /** * 事件源 */ public class Subject { int sta...原创 2020-05-03 21:05:14 · 114 阅读 · 0 评论 -
装饰器模式学习
一、装饰器模式: 指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。 通常情况下,扩展一个类的功能会使用继承方式来实现。但继承具有静态特征,耦合度高,并且随着扩展功能的增多,子类会很膨胀。如果使用组合关系来创建一个包装对象(即装饰对象)来包裹真实对象,并在保持真实对象的类结构不变的前提下,为其提供额外的功能,这就是装饰模式的目标。 二、实践 2.1 定义一个接口...原创 2019-12-10 21:59:15 · 88 阅读 · 0 评论 -
模板方法学习
一、模板方法: 定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。 二、实践 饭店里面,客人点餐后,后厨烧菜。后厨做菜的整个过程可以认为都是在重复烧菜前准备、烧菜、烧菜后处理这三个步骤,因此我们可以顶一个烧菜的模板,具体的细节延迟到每一道菜做的过程中去实现。 2.1 定义烧菜的模板 //定义模板,烧菜步骤:烧菜前准备工作、烧菜、...原创 2019-12-10 20:41:01 · 151 阅读 · 0 评论 -
委派模式学习
一、委派模式: 主要角色有三种: 抽象任务角色, 委派者角色, 具体任务角色. 实现层面上, 定义一个抽象接口, 它有若干实现类, 他们真正执行业务方法, 这些子类是具体任务角色; 定义委派者角色也实现该接口, 但它负责在各个具体角色实例之间做出决策, 由它判断并调用具体实现的方法.委派模式对外隐藏了具体实现, 仅将委派者角色暴露给外部, 如Spring的DispatcherServlet. 二...原创 2019-12-09 22:10:29 · 158 阅读 · 0 评论 -
策略模式学习
一、策略模式(Strategy): 定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。 二、使用场景: 1、一个系统有许多类,而区分它们的只是他们直接的行为。 2、在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。 三、实践 3.1 定义策略接口 public interface CalculateStrategy { int doCalculate(i...原创 2019-12-09 21:28:27 · 84 阅读 · 0 评论 -
设计模式之原型模式学习
本文参考自:https://www.cnblogs.com/betterboyz/p/9356190.html 原型模式的定义与特点 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较...原创 2019-10-19 20:06:32 · 94 阅读 · 0 评论 -
设计模式之单例模式
文中内容参考摘录自:http://c.biancheng.net/view/1338.html ,仅作学习笔记记录。 一、单例模式的定义与特点 单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。 在计算机系统中...原创 2019-10-19 17:44:39 · 94 阅读 · 0 评论