设计模式笔记
随 心
好好生活,好好编程。
展开
-
Facade(外观)模式
介绍Facade模式就是在错从复杂的类群中提炼出一个简单窗口,通过这个窗口我们可以按照正确的方式调用类。程序这东西总会越来越大,类也会越来越多,在我们使用类之前必须先弄清他们之间的关系和调用顺序。但是使用Facade模式我们就可以通过一个简单的接口调用就可以获得我们想要的结果,而把中间的调用顺序什么的都交给Facade模式。实现原理对于这个模式我们需要错从复杂的类,但是呢为了简便我们可以...原创 2019-11-03 20:29:47 · 115 阅读 · 0 评论 -
Chain of Responsibility(责任链)模式
介绍有时候我们去某公司办事,首先我们去找前台人员,然后前台人员告诉我们不归他们管,让我们去找营业窗口,他们又说不归他们管,又让我们去找售后部门。就这样,我们被不断地踢给下一个部门,直到找到合适的部门。这就是“推卸责任”。有时候我们反而需要“推卸责任”。加入我们将多个对象组成一条职责链,然后按照它们在职责链上的顺序一个一个的找出到底谁才能处理。实现思路每个部门推卸部门,除了最后一个。这样的...原创 2019-11-03 20:07:05 · 134 阅读 · 0 评论 -
Visitor(访问者)模式
核心思想现在有数据结构和处理数据结构的代码。是把他们放在一起好呢还是分开放好呢?如果处理的代码非常多呢?这样,每当我们要要增加新的处理代码时,就要修改数据结构的类,是不是不太好。在访问者模式中,数据结构和处理被分开。分为数据结构类和访问者(处理)类。这样我们不需要改动数据结构类就可以修改处理或添加数据的方法。实现思路1,数据结构2,访问者接受需要有接受数据结构的构造函数...原创 2019-11-03 19:57:23 · 229 阅读 · 0 评论 -
Decorator(装饰物)模式
核心思想假如你有一块蛋糕,加上奶油就是奶油蛋糕,再加上草莓就是草莓奶油蛋糕,再加。。。类也可以这样,一个基础类,你不断给它添加功能,那么它的功能越明确。就像Object类是所有类的鼻祖,给它加不同的功能就具体化成不同的类。实现实现一个基础 数进制 转换类。然后添加一个将十进制数转换为二进制数的方法。在添加一个将十进制转换为八进制的方法。以此类推。这就是装饰物模式,也许你已经在用了。...原创 2019-11-03 19:40:43 · 133 阅读 · 0 评论 -
Composite(混合)模式
前言文件夹里可以保存文件夹和文件,统称为文件条目。如果我们想找一个文件或者文件夹,就是寻找一个文件条目。这里,我们将文件夹与文件当做同一种东西看待。类似,我们可以这样看待容器和容器里的东西。容器里面也可以放容器。如何实现呢?加入我们有文件夹和文件两个类,那么我们就需要一个他们的父类,用来同意统一他们。...原创 2019-11-03 19:27:34 · 104 阅读 · 0 评论 -
Strategy模式
灵魂三问:1,什么是整体地替换算法?2,它有什么用?3,怎么用?什么是整体地替换算法?Strategy的意思是“策略”,指的是你做某件事时所用的方法,在编程中,我们可以将它理解为“算法”。它有什么用?无论什么程序,其目的都是为了解决实际问题。使用Strategy模式可以整体地替换算法的实现部分。能够整体地替换算法,能够让我们轻松地以不同的算法去解决同一个问题。怎么用?类和接口:...原创 2019-10-26 22:18:49 · 105 阅读 · 0 评论 -
Bridge模式
灵魂三问:什么是桥梁模式?它有什么用?怎么用?什么是桥梁模式?就像一座桥连接河两岸,桥梁模式就是从这里抽象出来的。它有什么用?Bridge模式的作用是在 “类的功能层次结 构” 和“类的实现层次结构之间”搭建桥梁。类层次结构的两个作用以上的这种层次结构被称为“类的功能层次结构”。那么什么是“类的实现层次结构”呢?像下面这种层次结构,叫做“类的实现层次结...原创 2019-10-26 21:56:24 · 117 阅读 · 0 评论 -
AbstractFactory模式
灵魂三问:1,什么是抽象工厂模式?2,它有什么用?3,怎么用?什么是抽象工厂模式?前面我们说过工厂模式,那么什么是抽象工厂模式呢?抽象工厂就是不知道这个工厂具体是干什么的,只有实现其接口的工厂才是具体的工厂。比如我们有一块地,但是我们不知道要建什么工厂,只有确定好了我们才知道我们要建纺织厂。它有什么用?抽象工厂的工作是将“抽象零件”组装成“抽象产品”。在这里,我们不关心零件的饿...原创 2019-10-24 17:29:37 · 104 阅读 · 0 评论 -
Builder模式
灵魂三问:1,什么是建造者模式?2,它有什么用?3,怎么用?什么是建造者模式?建造者模式是从构件复杂物体时先考虑每个小物体的方式抽象而来的。它有什么用?通过使用建造者模式,建造者只需要规定复杂物体A的每个组成部分,并不需要实现。这些组成部分由Builder的子类去实现,这样建造者只需要关注如何把这些组件组合起来。通过使用这个模式,我们可以把一个复杂的问题划分为很多小问题,然后通过不...原创 2019-10-24 17:04:20 · 118 阅读 · 0 评论 -
Prototype模式
灵魂三问:1,什么是原型模式?2,它有什么用?3,怎么用?什么是原型模式?有的时候我们不知道所要生成的类的实例的名称,而使用new生成实例时必须要指定类名。就像打印机一样,我们只需要一个文档,就可以赋值好多分一模一样的文档。这个过程抽象出来就是原型模式?它有什么用?通过原型设计模式,我们可以在不指定类名的情况下生成实例,只要我们已有一个实例,它就是原型,我们就可以通过它去复制出其它...原创 2019-10-24 16:16:57 · 94 阅读 · 0 评论 -
Singleton模式
灵魂三问:什么是单例模式?它有什么用?怎么用?什么是单例模式程序运行过程中,通常都会生成很多实例,比如java.lang.String类的实例。如果有100个字符串对象,就会有100个String实例。有的时候我们想让程序中只有一个对象的实例,能实现这种愿望的设计模式称为单例模式。有什么用?可以保证某类的实例唯一性怎么用?为了保证在任何情况下都只能生成一个实例,构造函数必须设置...原创 2019-10-24 16:09:27 · 86 阅读 · 0 评论 -
Factory Method模式
灵魂三问:什么是工厂模式?它可以做什么?怎么用?什么是工程模式用Template Method模式来构建生成实例的工厂就是工厂模式。它可以做什么在工厂模式中,父类决定实例的生成方式,但并不决定所要生成的具体的类,具体的处理全部交给子类负责。这样就可以将生成实例的床架(framework)和实际负责生成实例的类解耦。怎么用Factory定义了工厂生成实例的方式。Product定...原创 2019-10-24 15:56:46 · 85 阅读 · 0 评论 -
TemplateMethod模式
灵魂三问?什么是模板模式?有什么用?怎么用?什么是模板模式?大家都知道活字印刷,使用字模板可以很快印刷出来好多好多字。用的染料不同呢印出来的字也不同。这里,模板模式就是从这样的生活现象中抽象出来的一种设计模式。有什么用?使用模板设计模式,你只需要定义好模板(抽象类),具体实现细节则交给子类去完成就行了。这样可以满足不同子类的不同需求。怎么用?1,设计模板public abstr...原创 2019-10-24 15:21:22 · 67 阅读 · 0 评论 -
设计模式之适配器模式-2
灵魂三问?1,什么是适配器模式?2,它有什么用?3,怎么用?什么是适配器模式?通俗点讲,我们都知道国家标准电压是220V,但是电脑所需电压却只有(此时反过来电脑看了一下)19.5V,但是我们给电脑充电的时候有个电源适配器,没错,就是那个黑疙瘩。它把220V电压转换为19.5V电压供我们电脑使用。在这里,电源适配器就充当了适配器角色。如果我们需要50V电压,只需要更换一下电源适配器,而不需...原创 2019-10-21 23:31:01 · 102 阅读 · 0 评论 -
Iterator模式--1
Iterator模式用于在数据集合中按照顺序遍历集合Iterator模式中的概念:Iterator(迭代器):负责定义按顺序逐个遍历元素的接口API;ConcreteIterator(具体的迭代器):负责实现Iterator定义的接口;Aggregate(集合):负责定义创建Iterator角色的接口;ConcreteAggregate(具体的集合):负责实现Aggregate角色所定义...原创 2019-10-16 18:32:12 · 103 阅读 · 0 评论 -
学习设计模式之前的一些小知识
1,设计模式并非类库,但类库中用到了设计模式2,设计模式考虑的是怎样才能将程序作为“组件重复使用”3,不要只会看图,还要能理解图4,自己思考虽然有时候学的慢,但是却都是印象最深刻的。待续。。...原创 2019-10-16 17:56:51 · 95 阅读 · 0 评论 -
UML之时序图
什么是时序图?答:用来表示程序在工作过程时其内部方法的调用顺序,以及时间的发生顺序。比如今天一天你的行为就可以构成一个时序图:起床->洗脸刷牙->吃饭->…。示例:...原创 2019-10-16 17:51:06 · 86 阅读 · 0 评论 -
java中的UML之类图
文章主体概述:==类图==;==类名,字段名,方法名在类图中的表示==;==接口与实现在类图中的表示==;==聚合==;==可见性的表示(public,private,protected)==;==类的关联==;主体:首先来看一张图:在这里,一个类被分成了三部分,类名,变量域,成员方法域。abstract类的名字以粗字斜体表示;static字段的名字下带有下划线;abs...原创 2019-10-16 17:51:21 · 287 阅读 · 0 评论