设计模式
梓莘
zero-->hero 理性+理智。记住一句话:越努力,越幸运。犯其至难,图其至远。努力规划,实现自我。↖(^ω^)↗
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【设计模式】访问者模式
访问者模式 在学习访问者模式之前,我们先来看一个生活中的例子,比如我们看到的唱歌选秀节目中需要观众对歌手进行测评我们将观众分为男生和女生,在表演完之后,观众需要对歌手的表现作出自己的评价,我们假设目前的评价有成功和失败两种。 如果使用传统的方式我们可能会想着使用继承的方式来完成,但是呢,这种方式如果系统比较小,人数比较少的时候还可以使用,但是当系统越来越多的功能时,对代码改动较大,违反了ocp原则,不利于维护。扩展性也不好,基于此种情况我们引入接下来将要学习的访问者模式。 一、访问者模式基本介绍 访问者模原创 2020-09-08 11:39:16 · 152 阅读 · 0 评论 -
【设计模式】命令模式
命令模式 在学习命令模式之前我们先来看一个生活中的例子,现在市场上智能家居是越来越普及,加入说我们买了一套智能家居,有照明灯、风扇、冰箱、洗衣机等等,我们只要在手机上安装app就可以控制这些家电进行工作。 但是呢,这些智能家具来自不同的厂家,我们不想针对每一种家电都去安装一个app来分别控制。我们希望只要一个app就可以控制全部智能家电。 要实现一个app控制所有智能家电的需要,则每个智能家电的厂商都要提供一套规范的接口给app,这种情况呢我们就可以考虑使用命令模式。 命令模式可以将“动作的请求者”从“动作原创 2020-09-08 11:36:30 · 166 阅读 · 0 评论 -
【设计模式】模板方法模式
模板方法模式 在学习模板方法模式之前,我们先以一个生活中比较常见的例子来引入。 比如我们制作豆浆的时候,流程都是选材料—添加配料----浸泡----放到豆浆机中打碎。 我们通过添加不同的配料,就可以了制作出不同口味的豆浆。 其中 1 2 4部对于每个豆浆的制作过程都是一样的。这种情况下我们就很容易的想到模板方法。也可能你不知道这就是模板方法模式,但是你实际上已经在使用了。 一、模板方法模式基本介绍 模板方法模式又叫模板模式,在一个抽象类公开定义了执行他的方法的模板。他的子类可有按需要重写方法实现,但调用将原创 2020-09-08 11:24:54 · 299 阅读 · 0 评论 -
【设计模式】代理模式
代理模式 一、代理模式的基本介绍 代理模式:为一个对象提供一个替身,以控制对这个对象的访问,即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目录对象的功能 被代理的对象可以是远程对象、创建开销大的对象或者需要安全控制的对象 代理模式有不同的形式,主要有三种 静态代理 、动态代理(也叫JDK代理、接口代理)、Cglib代理(可以在内存中动态的创建对象,而不需要实现接口,它是属于动态代理的范畴) 二、静态代理 1. 静态代理模式的基本介绍 静态代理在使用时原创 2020-09-08 11:19:42 · 303 阅读 · 0 评论 -
【设计模式】享元模式
享元模式 在学习享元模式之前我们先来看一个生活中的例子,比如我们给客户A做了一个产品展示相关的网站,客户A的朋友感觉也很不错,也希望做这样的产品产生网站,但是呢有要求不能和A的完全一样,比如。有人要求以博客的形式呈现、有人要求以小程序的方式呈现、有人要求以公众号的形式呈现。 基于此种需求,我们首先想到的就是将原网站复制粘贴一份,然后根据客户不同要求,进行定制修改。同时呢也为每一个系统购买一个服务器。 但是呢这种方式存在很多的问题,下面我们来详细看一下 需要的网站结构类似相似度很高,而且都不是高访问量网站,原创 2020-09-08 10:57:44 · 299 阅读 · 0 评论 -
【设计模式】外观模式
外观模式 组建一个家庭影院: DVD播放器、投影仪、自动屏幕、环绕立体声、爆米花机、要求完成所有的功能,其过程包括 直接用遥控器,统筹各设备开关 开爆米花机 放下屏幕 开投影仪 开音响 开DVD 去拿爆米花 调暗灯光 播放 观影结束,关闭各种设备 首先我们想到的就是为每个设备使用一个遥控器 一、传统方式问题分析 在ClientTest的main方法中,创建各个子系统的对象,并直接去调用子系统(对象)的相关方法,会造成调用过程混乱。没有清晰的过程 不利于ClientTest中,去维护对子系统的操作 解原创 2020-09-02 17:37:18 · 205 阅读 · 0 评论 -
【设计模式】组合模式
组合模式 在学习组合模式之前我们先来看一个生活中的例子,假如我们现在需要写一个程序展示一个学校院系结构,一个学校有多个学院,一个学院有多个系。 按照传统的思路来说我们可能会想将学院作为学校的子类,将系作为学院的子类。 但是呢,这种存在一些问题: 学院看做学校的子类,系看成是学院的子类,这样实际上是站在组织大小来进行划分层次的 实际上我们的要求是在一个结果中输出院系组成,这种方案,不能很哈皮的实现管理的操作,比如学院、系别的增加、删除、遍历等等操作。 基于此问题我们可以考虑吧将学校、院、系都看做是组织结构原创 2020-09-02 17:33:52 · 241 阅读 · 0 评论 -
【设计模式】装饰者模式
装饰者模式 在学习装饰者模式之前我们先来看一个生活中的例子。 比如你要去咖啡馆点一杯咖啡,而咖啡店有单品咖啡比如意大利咖啡、美式咖啡等等。同时又包含糖、牛奶等咖啡辅料。当你在选择点单的时候可以选择只点单品咖啡或者点单品咖啡加辅料等。 当然我们也要保证在扩展新的咖啡单品时候,具有良好的扩展性。 我们首先想到的肯定是将咖啡单品和辅料进行各种组合,但是这种呢容易造成类爆炸 。 一、解决咖啡点单问题方案一分析 Drink是一个抽象类,表示饮料 des就是对咖啡的描述,比如咖啡的名字 cost()方法就是计算费用原创 2020-09-02 17:30:54 · 205 阅读 · 0 评论 -
【设计模式】适配器模式
适配器模式 在看适配器模式之前,我们先来看一个生活中的例子,比如你去国外旅游需要给手机充电,但是我们知道插座有各种孔的,比如国标、美标、欧标、英标等等。假如此时只有一个欧标的插座那你该怎么办呢?这个时候我们可以买一根多功能转换插头,这样就 可以使用了。基于此我们就可以引出适配器模式。 首先,我们来看一下适配器模式的基本介绍。 一、基本介绍 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容因为接口不匹配不能一起工作的两个类可以协同工作。其也叫做包装器 适配器模式属于结构性模型 主要分原创 2020-08-26 17:01:16 · 292 阅读 · 0 评论 -
【设计模式】建造者模式
建造者模式 在看建造者模式之前,我们先看一个简单的建造房子需求。 需要建房子:这个过程呢分为打桩,砌墙,封顶 房子有各式各样的,比如居民住房,办公楼,别墅等,虽然建的过程一样,但是要求确是不同的 看到这个需求,我们如果使用传统的方式该如何解决呢,我们首先想到的就是,先建立一个抽象类,分别包含这3步和一个组合的方法,然后让各自的房子去继承这个抽象类完成自己的动作。 一、传统方式去实现上述需求 package com.slp.pattern.builder.v1; /** * @ClassName原创 2020-08-26 16:52:17 · 218 阅读 · 0 评论 -
【设计模式】原型模式
原型模式 在看原型模式之前我们先看一个例子 一、克隆羊问题 现在有一只羊tom,2岁啦是小白,需要编写程序创建和该羊属性完全一样的几只羊 二、传统方式解决克隆羊问题 package com.slp.pattern.protptype.v1; public class Sheep { private String name; private int age; private String color; public Sheep(String name, int age, S原创 2020-08-26 16:43:18 · 138 阅读 · 0 评论 -
【设计模式】工厂模式
工厂模式 一、简单工厂模式 1.看一个具体的需要 有一个生产披萨的需求,要便于披萨种类的扩展,要便于维护 披萨种类很多 只做步骤分为prepare bake cut box 完成披萨的定个功能 2.使用传统的方式来完成 2.1思路分析 2.2代码 package com.slp.pattern.factory.v1; /** * @ClassName Pizza * @Description TODO * @Author sanglp * @Date 2020/8/17 13:00 * @原创 2020-08-21 09:28:06 · 159 阅读 · 0 评论 -
【设计模式】单例设计模式
一、单例设计模式介绍 所谓类的单例模式,就是采取一定的方法保证在整个的软件系统中,对某各类只能存在一个对象实例,并且该类只提供一个取得起对象实例的方法(静态方法)。 比如Hibernate的SessionFactory,他充当数据存储源的代理,并负责创建session对象,SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这就会用到单例模式。 二、单例设计模式八种方式 饿汉式(静态常量) 饿汉式(静态代码块) 懒汉式(线程不安全) 懒汉式(线程原创 2020-08-21 09:22:18 · 201 阅读 · 0 评论 -
【设计模式】设计模式概述
一、设计模式介绍 设计模式是面对同类软件工程设计问题所总结出来的有用的经验,模式部署代码,而是某类问题的通用解决方案,设计模式代表了最佳的实践,这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式的本质:提高软件的维护性、通用性和扩展性、并降低软件的复杂度。 设计模式不局限于某种语言。 二、设计模式的类型 1.创建型模式 单例模式 抽象工厂模式 原型模式 建造者模式 工厂模式 2.结构性模式 适配器模式 桥接模式 装饰模式 组合模式 外观模式 享元模式 代理模式 3.原创 2020-08-21 09:19:26 · 195 阅读 · 0 评论 -
【设计模式】UML类图
一、UML基本介绍 UML 统一建模语言,是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果。 UML本身是一套符号的规定,就像数学符号和化学符号意义,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9PwfLHpf-1597972471267)(.\images\1.UML类图1.png)] 二、UML图 画UML图与写文章差不多原创 2020-08-21 09:15:20 · 698 阅读 · 0 评论 -
【设计模式】设计模式学习目录
设计模式目录 文章 链接 程序设计七大原则 https://blog.youkuaiyun.com/daemon_slp/article/details/107985930 UML类图 设计模型概述 单例设计模式 工厂模式 原型模式 建造者模式 适配器模式 桥接模式 装饰者模式 组合模式 外观模式 ...原创 2020-08-21 09:12:23 · 161 阅读 · 0 评论 -
【设计模式】程序设计的七大原则
一、设计模式的目的 编写软件过程中,程序员面临着来自耦合性、内聚性以及可维护性。可扩展性、重用性、灵活性等多方面的挑战,设计模式时为了让程序具有更好的: 代码重用性 可读性 可扩展性 可靠性 使程序呈现高内聚。低耦合的特性 二、程序设计七大原则 设计模式的原则其实就是程序员在编程时应当遵循的原则,也是各种设计模式的基础 设计模式常用的七大原则: 单一职责原则 接口隔离原则 依赖倒转原则 里氏替换原则 开闭原则 迪米特法则 合成复用原则 1、单一职责原则 基本介绍 对类来说的,即一个类应该只负责一项职原创 2020-08-13 17:49:28 · 981 阅读 · 0 评论
分享