![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
DLC的学习笔记
这个作者很懒,什么都没留下…
展开
-
命令模式
需求:一套智能家电(照明灯、风扇、冰箱、洗衣机),我们只需要在手机上安装app就可以控制这些家电工作。我们希望只要一个app就可以控制所有的智能家电,则每个智能家电都要提供一个统一的接口给app调用,这时就可以考虑使用命令模式。命令模式可将“动作的请求者”从“动作的执行者”对象中解耦出来。在例子中,动作请求者是app,动作执行者是每个家电。1.基本介绍在软件设计中,我们经常需要向某些对象...原创 2020-04-25 10:47:05 · 197 阅读 · 0 评论 -
模板方法模式
需求:豆浆制作问题编写制作豆浆的程序,说明如下:制作豆浆的流程 选材–>添加配料–>浸泡–>放到豆浆机打碎通过添加不同的配料,可以制作出不同口味的豆浆。选材、浸泡、放到豆浆机这几个步骤对于每一种豆浆都一样。1.模板方法模式基本介绍在一个抽象类中公开定义了执行它的方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方法进行。简单说,模板方法模式定...原创 2020-04-23 19:22:54 · 130 阅读 · 0 评论 -
代理模式(Proxy)
1.基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问,即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或者需要安全控制的对象。代理模式有三种形式:静态代理、动态代理和Cglib代理。代理模式示意图如下:2.静态代理(1)基本介绍静态代理在使用时,需要定义接口...原创 2020-04-23 16:39:54 · 164 阅读 · 0 评论 -
享元模式
需求:小型的外包项目,给客户A做一个产品展示网站,客户A的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同。有客户要求以新闻的形式发布有客户要求以博客的形式发布有客户希望以微信公众号的形式发布1.传统方案复制粘贴一份,然后根据客户不同的要求,进行定制修改。缺点:网站相似度高,但是都有各自的实例,造成服务器的浪费解决思路:整合到一个网站中,共享其相关的代码和数据...原创 2020-04-22 16:52:38 · 173 阅读 · 0 评论 -
外观模式
需求:1.传统如果为每一个设备建一个类,在其中写调用这个设备的方法。但是Client在操作这些设备的时候就比较繁琐,有以下问题:在Client中,创建各个子系统的对象,并直接去调用子系统(对象)相关方法,会造成调用过程混乱,没有清晰的过程。不利于在Client中去维护对子系统的操作。解决思路:定义一个高层接口,给子系统中的一组接口提供一个一致的界面(比如在高层接口中提供四个方法re...原创 2020-04-21 15:10:57 · 137 阅读 · 0 评论 -
组合模式
学校院系展示需求编写程序展示一个学校院系结构:类似下图1.使用组合模式使用继承关系不能很好的实现管理的操作。解决方案:把学校、院、系都看作组织结构,他们之间没有继承的关系,而是一个树形结构,可以更好地实现管理操作。2.组合模式基本介绍组合模式,又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式依据树形结构来组合对象,用来表示部...原创 2020-04-20 08:51:33 · 171 阅读 · 0 评论 -
装饰者模式
星巴克咖啡订单项目咖啡种类:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡)调料:Milk、Soy(豆浆)、Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便使用OO的方式来计算不同种类咖啡的费用:客户可以点单品咖啡,也可以点单品咖啡+调料组合1.传统方案使用一个抽象类Drink,其中有成...原创 2020-04-19 11:26:52 · 142 阅读 · 0 评论 -
桥接模式
现对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网、打电话等)1.传统方法扩展性问题:如果再增加手机的样式,就需要增加各个品牌类的手机2.桥接模式的基本介绍桥接模式是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变结构型设计模式Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象与实现分离开来,...原创 2020-04-18 13:34:50 · 233 阅读 · 0 评论 -
适配器模式
比如插座,不同国家的插座与插头需要适配器。1.适配器模式基本介绍适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是兼容性,让原本因接口不匹配而不能一起工作的两个类可以协同工作。别名为包装器。适配器模式属于结构型模式。分为三类:类适配器模式、对象适配器模式、接口适配器模式2.适配器模式工作原理适配器模式:将一个类的接口转换成另一种接口,让原本不兼容的类可以兼容。从用...原创 2020-04-18 09:40:00 · 165 阅读 · 0 评论 -
建造者模式
盖房项目需求:流程是打桩、砌墙、封顶房子有各种各样,建造流程虽然一样,但是具体操作不同1.传统方式最容易想到的,就是让不同的房子种类继承一个共同的父类,并且实现其抽象方法。其中build()中调用其他三个方法,在使用时只需要调用build()即可建房子。缺点:将房子和建房子的过程封装在了一起,耦合性增强了。2.建造者模式基本介绍是一种创建型模式,可以将复杂对象的建造过程抽象...原创 2020-04-17 15:27:53 · 142 阅读 · 0 评论 -
原型模式
克隆羊问题:现在有一只羊tom,姓名为tom,年龄为:1,颜色为:白色,请编写程序创建和tom羊属性完全相同的10只羊。1.简单粗暴直接new一个新的Sheep实例,在创建时传入被克隆实例的属性即可。@Datapublic class Sheep { private String name; private int age; private String colo...原创 2020-04-17 10:09:56 · 163 阅读 · 0 评论 -
工厂模式
鉴于课程中的工厂模式确实讲得不好,所以我自己总结整理了一篇。一、简单工厂模式定义:专门定义一个类用来创建其他类的实例,被创建的实例通常具有共同的父类。简单工厂模式不是23种里的一种,简而言之,就是有一个专门生产某个产品的类。比如下图中的鼠标工厂,专业生产鼠标,给参数0,生产戴尔鼠标,给参数1,生产惠普鼠标。有三个要素:产品接口产品实现工厂实现每次想要获得不同的产品时,只需要...原创 2020-04-14 18:01:22 · 853 阅读 · 0 评论 -
单例模式
一、设计模式概述和分类1.创建型模式单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式2.结构型模式适配者模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式3.行为型模式模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式单例模式就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个...原创 2020-04-13 13:31:38 · 184 阅读 · 0 评论 -
UML类图
一、UML基本介绍统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML使用面向对象设计的建模工具,但独立于任何具体程序设计语言。UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、...原创 2020-04-12 14:14:26 · 164 阅读 · 0 评论 -
设计模式的七大原则
一、设计模式的重要性设计模式是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式可以提高代码重用性、可读性、可扩展性、可靠性,使程序呈现高内聚、低耦合的特性。二、单一职责原则一个类应该只负责一项职责。如果类A负责职责1和...原创 2020-04-12 10:26:23 · 167 阅读 · 0 评论