51
Dev开发社区
首页
文章
问答
工具
搜索
登录
注册
#大话设计模式
《设计模式之禅》之访问者模式
访问者模式是一个相对简单的模式,其定义如下:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。角色职责Visitor–抽象访问者抽象类或者接口,声明访问者可以访问哪些元素,具体到程序中就是visit方法的参数定义哪些对象是可以被访问的。ConcreteVisitor...
代码星球
·
2020-12-28
设计模式之禅
访问者
模式
《设计模式之禅》之备忘录模式
备忘录模式提供了一种弥补真实世界缺陷的方法,让”后悔药”在程序的世界中真实可行,其定义如下:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。通用类(三个角色)Originator发起人角色记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创...
代码星球
·
2020-12-28
设计模式之禅
备忘录
模式
设计模式总结篇系列:命令模式(Command)
在程序设计中,经常会遇到一个对象需要调用另外一个对象的某个方法以达到某种目的,在此场景中,存在两个角色:请求发出者和请求接收者。发出者发出请求,接收者接收请求并进行相应处理。有时候,当需要对请求发出者和接收者进行解耦,即发出者中不能含有接收者的引用,如请求需要进行排队操作,或可能需要对请求进行取消操作等,在此类场景中,...
代码星球
·
2020-12-25
设计模式
总结
系列
命令
模式
设计模式总结篇系列:观察者模式(Observer)
观察者模式中通常有两个基本的概念主题:观察者和被观察者。当被观察者状态发生改变时,需要通知相应的观察者,当然,每个被观察者所对应的观察者可能不知一个,他们之间是1:n的关系。用专业一点的术语对观察者模式的描述为:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化。观察者模式的一般实现方式如下:1.定义观察...
代码星球
·
2020-12-25
设计模式
总结
系列
观察者
模式
设计模式总结篇系列:模板方法模式(Template Method)
模板方法模式需要开发抽象类和具体子类之间的协作。抽象类负责给出一个算法的轮廓和骨架,子类则负责给出这个算法的各个逻辑步骤。代表这些具体逻辑步骤的方法称做基本方法(primitivemethod);而将这些基本方法汇总起来的方法叫做模板方法(templatemethod)。子类重写抽象类中的抽象方法,通过调用抽象类中的模...
代码星球
·
2020-12-25
设计模式
总结
系列
模板
方法
设计模式总结篇系列:策略模式(Strategy)
前面的博文中分别介绍了Java设计模式中的创建型模式和结构型模式。从本文开始,将分别介绍设计模式中的第三大类,行为型模式。首先我们了解下分为此三大类的依据。创建型模式:主要侧重于对象的创建过程;结构型模式:主要侧重于处理类或对象的组合;行为型模式:主要侧重于类或对象之间的交互以及职责分配。首先了解下策略模式的概念:定义...
代码星球
·
2020-12-25
设计模式
总结
系列
策略
模式
设计模式总结篇系列:享元模式(Flyweight)
我们都知道,Java中的String类具有如下特性:String是一个不可变类,当直通过用字符串方式使用String对象时,Jvm实际上在内存中只存有一份,且存在字符串常量池中。当对字符串直接进行修改时(如直接联接另一个字符串常量),Jvm会首先去字符串常量池中查找是否已经存在此字符串,不存在则创建一份放在池中,存在则...
代码星球
·
2020-12-25
设计模式
总结
系列
享元
模式
设计模式总结篇系列:组合模式(Composite)
在探讨Java组合模式之前,先要明白几个概念的区别:继承、组合和聚合。继承是is-a的关系。组合和聚合有点像,有些书上没有作区分,都称之为has-a,有些书上对其进行了较为严格区分,组合是contains-a关系,聚合是has-a关系。组合方式中被组合的对象生命周期不能超过整体,一般写代码时是直接在整体类的构造方法中创...
代码星球
·
2020-12-25
设计模式
总结
系列
组合
模式
设计模式总结篇系列:桥接模式(Bridge)
在实际类设计过程中,有时会遇到此类情况:由于实际的需要,某个类具有两个或两个以上的维度变化,如果利用继承将每种可能的变化情况都定义成一个类,一是会导致类膨胀的问题,二是以后不太好维护和并且违背类的设计原则。那么面对这种情况,类改如何设计呢?这就是本文所要讲到的桥接模式。简单的讲,桥接模式是指:将抽象和行为划分开来,从而...
代码星球
·
2020-12-25
设计模式
总结
系列
桥接
模式
设计模式总结篇系列:外观模式(Facade)
张三自从毕业后开始做软件开发,做着做着发现不爽了,钱赚不了太多,头发也白了。于是拿着一点小资本,想着做点小生意。瞅着眼前的餐饮行业还不错,于是打算开一家餐馆。开参观可不是一件容易的事,仅仅行政类的审批流程就不少。至少包括办理卫生许可证,办理税务登记,办理工商登记等。我们先来看一下行政审批接口:1interfaceExe...
代码星球
·
2020-12-25
设计模式
总结
系列
外观
模式
设计模式总结篇系列:代理模式(Proxy)
时代在发展,我们发现,现在不少明星都开始进行微访谈之类的,有越来越多的参与捐赠等。新的一天开始了,首先看下新的一天的日程安排:1interfaceSchedule{23publicvoidweiTalk();45publicvoiddonation();67}Schedule接口定义了今天的形成安排,主要包括微访谈和捐...
代码星球
·
2020-12-25
设计模式
总结
系列
代理
模式
设计模式总结篇系列:装饰器模式(Decorator)
在面向对象设计过程中,经常会遇到需要对现有的类的功能进行扩展,通常我们可以采用继承的方式。例如老罗最近在做手机,一开始需要定义手机所应具有的功能:1interfacePhone{23publicvoidtel();45publicvoidsms();67}在此,为简单起见,只是定义了接打电话和收发短信功能。然后,老罗开...
代码星球
·
2020-12-25
设计模式
总结
系列
装饰
模式
设计模式总结篇系列:适配器模式(Adapter)
网上看到不少关于适配器模式的讲解,其中对于适配器模式解释的过于专业,一时不是特别理解适配器模式到底是用来干嘛的,具体的适用场景在哪,其最精髓的地方到底在哪。本文结合自己的理解,阐述下对适配器模式的看法。假设系统存在一个现有的类UserInfo:1classUserInfo{23privateMap<String,...
代码星球
·
2020-12-25
设计模式
总结
系列
适配器
模式
设计模式总结篇系列:原型模式(Prototype)
首先对原型模式进行一个简单概念说明:通过一个已经存在的对象,复制出更多的具有与此对象具有相同类型的新的对象。在理解Java原型模式之前,首先需要理解Java中的一个概念:复制/克隆。在博文《Java总结篇系列:java.lang.Object》一文中,对Java中的clone()方法进行了一定的阐述。同时,我们需要知道...
代码星球
·
2020-12-25
设计模式
总结
系列
原型
模式
设计模式总结篇系列:抽象工厂模式(Abstract Factory)
在上一篇的工厂方法模式中,通过一个公用的类对其他具有相同特性(实现相同接口或继承同一父类)的类的对象进行创建。随之带来的问题在于:当新定义了一个具有相同特性的类时,需要修改工厂类。这与设计模式中的开闭原则有些违背。因此,通过抽象工厂模式:创建多个工厂类而不是一个工厂类,一旦需要创建新的类对象,只需增加新的工厂类就可以了...
代码星球
·
2020-12-25
设计模式
总结
系列
抽象
工厂
首页
上一页
...
11
12
13
14
15
...
下一页
尾页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他