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