本月博客排行
-
第1名
wy_19921005 -
第2名
mft8899 -
第3名
java-007 - benladeng5225
- Anmin
年度博客排行
-
第1名
龙儿筝 -
第2名
宏天软件 -
第3名
benladeng5225 - wy_19921005
- vipbooks
- kaizi1992
- 青否云后端云
- e_e
- tanling8334
- sam123456gz
- arpenker
- zysnba
- fantaxy025025
- xiangjie88
- lemonhandsome
- wallimn
- jh108020
- ganxueyun
- Xeden
- xyuma
- zhanjia
- wangchen.ily
- johnsmith9th
- zxq_2017
- forestqqqq
- jbosscn
- daizj
- xpenxpen
- 喧嚣求静
- kingwell.leng
- lchb139128
- kristy_yy
- jveqi
- javashop
- lzyfn123
- sunj
- yeluowuhen
- ajinn
- lerf
- silverend
- chenqisdfx
- xiaoxinye
- flashsing123
- bosschen
- lyndon.lin
- zhangjijun
- sunnylocus
- lyj86
- paulwong
- sgqt
最新文章列表
3. 行为型模式 (11) 解释器模式
3. 行为型模式 (11) 解释器模式
解释器模式(Interpreter Pattern)实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
优点:
1. 可扩展性比较好,灵活。
2. 增加了新的解释表达式的方式。
3. 易于实现简单文法。
缺点:
1. 可利用场景比较少。
2. 对于复杂的文法比较难维护。
3. 解释器模 ...
3. 行为型模式 (10) 中介者模式
3. 行为型模式 (10) 中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。
提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。
优点:
1. 降低了类的复杂度,将一对多转化成了一对一。
2. 各个类之间的解耦。
3. 符合迪米特原则。
缺点:
1. 中介者会庞大,变得复杂难以维护。
...
3. 行为型模式 (9) 访问者模式
3. 行为型模式 (9) 访问者模式
访问者模式(Visitor Pattern)中元素的执行算法可以随着访问者改变而改变。
元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。
优点:
1. 符合单一职责原则。
2. 优秀的扩展性。
3. 灵活性。
缺点:
1. 具体元素对访问者公布细节,违反了迪米特原则。
2. 具体元素变更比较困难。
3. 违 ...
3. 行为型模式 (8) 状态模式
3. 行为型模式 (8) 状态模式
状态模式(State Pattern)中,类的行为是基于它的状态改变的。
在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。
1. 状态模式
package com.andrew.pattern0308.state.model01;
public interface State {
...
3. 行为型模式 (7) 备忘录模式
3. 行为型模式 (7) 备忘录模式
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。
在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。
1. 备忘录模式
package com.andrew.pattern0307.memento.model01;
publi ...
3. 行为型模式 (6) 命令模式
3. 行为型模式 (6) 命令模式
命令模式(Command Pattern)以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
1. 命令模式
package com.andrew.pattern0306.command.model01;
public interface Order {
voi ...
3. 行为型模式 (5) 责任链模式
3. 行为型模式 (5) 责任链模式
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。
通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
优点:
1. 降低耦合度。它将请求的发送者和接收者解耦。
...
3. 行为型模式 (3) 观察者模式
3. 行为型模式 (3) 观察者模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
1. 观察者模式
package com.andrew.pattern0303.observer.m ...
3. 行为型模式 (2) 模板方法模式
3. 行为型模式 (2) 模板方法模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
优点:
1. 封装不变部分,扩展可变部分。
2. 提取公共代码,便于维护。
3. 行为由父类控制,子类实现。
缺点:
1. 每一个不同的实现都需要一个子类来实现,导致类的个 ...
3. 行为型模式 (1) 策略模式
3. 行为型模式 (1) 策略模式
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。
优点:
1. 算法可以自由切换。
2. 避免使用多重条件判断。
3. 扩 ...
2. 结构型模式 (7) 享元模式
2. 结构型模式 (7) 享元模式
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。
享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。
1. 享元模式
package com.andrew.pattern0207.flyweight.model01;
public interface Shape {
...
2. 结构型模式 (6) 组合模式
2. 结构型模式 (6) 组合模式
组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。
这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。
1. 组合模式
package com.andrew.pattern0206.composite.mo ...
2. 结构型模式 (5) 桥接模式
2. 结构型模式 (5) 桥接模式
桥接(Bridge)是通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦,使得二者可以独立变化。
将抽象部分与实现部分分离,使它们都可以独立的变化。
优点:
1. 抽象和实现的分离。
2. 优秀的扩展能力。
3. 实现细节对客户透明。
缺点:
桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象 ...
2. 结构型模式 (3) 代理模式
2. 结构型模式 (3) 代理模式
代理模式(Proxy Pattern)中,一个类代表另一个类的功能。创建具有现有对象的对象,以便向外界提供功能接口。
优点:
1. 职责清晰。
2. 高扩展性。
3. 智能化。
缺点:
1. 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
2. 实现代理模式需要额外的工作,有些代理模式的实 ...
2. 结构型模式 (2) 装饰者模式
2. 结构型模式 (2) 装饰器模式
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。
在不想增加很多子类的情况下扩展类。一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。
1 ...
设计模式之观察者模式
观察者模式在对象间定义一对多的依赖,当一个对象改变状态,依赖它的对象都会收到通知。
类图:
一. java swing
swing 注册事件监听器过程,就是观察者模式。
// 注册监听事件
button.addActionListener( new ActionListener(){
@Override
public void actionPerformed(Ac ...