[设计模式] 几种设计模式的简单理解
2015-11-09 21:11
288 查看
1、工厂模式
2、抽象工厂模式
工厂模式的好处:实现了创建责任和消耗责任的分离,所有的创建责任都交给了工厂类来实现,而客户端只负责消耗;客户端无需知道具体的类名,这在类的名字比较长的时候比较有用;如果使用配置文件,在增加新的类的时候,甚至不需要修改代码。
工厂模式的缺点:如果产品种类比较多,会造成工厂方法的压力比较大。
3、单例模式
4、适配器模式
接口不一,如何转换问题?
5、装饰者模式
6、外观模式
7、模板模式
http://www.cnblogs.com/wangjq/archive/2012/07/09/2582978.html
优点:代码冗余降低
缺点:子类比较多
8、迭代器模式
数据访问问题
9、备忘录模式
备份和回复问题
10、责任链模式
目标:模块只处理自己能够处理的部分,如果不能处理,就将其处理过程交由更高曾模块去处理。这里可以实现动态分配任务和责任的效果。
/content/4035038.html
class Handle{
Handle super;
setSuper(Handle handle){};
abstract process();
}
class H1 extends Handle{
process();
}
class H2 extends Handle{
process();
}
class H3 extends Handle{
process();
}
main{
H1 h1 = new H1();
H1 h2 = new H2();
H1 h3 = new H3();
h1.setSuper(h2);
h2.setSuper(h3);
}
setSuper的过程可以是动态的而且传入的都是Handle接口。
可以动态的组装handle,从而形成各种图结构。
适用性:
有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
可处理一个请求的对象集合应被动态指定。
http://www.cnblogs.com/beijiguangyong/archive/2010/11/15/2302807.html#_Toc281750462
11. 中介者模式
如果对象之间的交互过多,可以使用中介者模式将原先的网状交互变为星状交互模式。
12. 观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。
这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。
13. state模式
1. 概述
当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
2. 解决的问题
主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。
14. 策略模式
当一个问题有多种实现方式时,对于这些方式的选择可以使用硬编码的方式
策略模式可以作为硬编码的替代方法,便于方法的维护!
15.
2、抽象工厂模式
工厂模式的好处:实现了创建责任和消耗责任的分离,所有的创建责任都交给了工厂类来实现,而客户端只负责消耗;客户端无需知道具体的类名,这在类的名字比较长的时候比较有用;如果使用配置文件,在增加新的类的时候,甚至不需要修改代码。
工厂模式的缺点:如果产品种类比较多,会造成工厂方法的压力比较大。
3、单例模式
4、适配器模式
接口不一,如何转换问题?
5、装饰者模式
6、外观模式
7、模板模式
http://www.cnblogs.com/wangjq/archive/2012/07/09/2582978.html
优点:代码冗余降低
缺点:子类比较多
8、迭代器模式
数据访问问题
9、备忘录模式
备份和回复问题
10、责任链模式
目标:模块只处理自己能够处理的部分,如果不能处理,就将其处理过程交由更高曾模块去处理。这里可以实现动态分配任务和责任的效果。
/content/4035038.html
class Handle{
Handle super;
setSuper(Handle handle){};
abstract process();
}
class H1 extends Handle{
process();
}
class H2 extends Handle{
process();
}
class H3 extends Handle{
process();
}
main{
H1 h1 = new H1();
H1 h2 = new H2();
H1 h3 = new H3();
h1.setSuper(h2);
h2.setSuper(h3);
}
setSuper的过程可以是动态的而且传入的都是Handle接口。
可以动态的组装handle,从而形成各种图结构。
适用性:
有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
可处理一个请求的对象集合应被动态指定。
http://www.cnblogs.com/beijiguangyong/archive/2010/11/15/2302807.html#_Toc281750462
11. 中介者模式
如果对象之间的交互过多,可以使用中介者模式将原先的网状交互变为星状交互模式。
12. 观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。
这个主题对象在状态上发生变化时,会通知所有观察者对象,让它们能够自动更新自己。
13. state模式
1. 概述
当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
2. 解决的问题
主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。
14. 策略模式
当一个问题有多种实现方式时,对于这些方式的选择可以使用硬编码的方式
策略模式可以作为硬编码的替代方法,便于方法的维护!
15.
相关文章推荐
- Spark学习笔记
- 使用jstl写的jsp生成之后查看源代码会看到头部有很多空行
- ViewFlipper
- SetEnvlfNoCase 记录从自己网站之外传来的请求
- BZOJ 2152 聪聪可可
- java基础第23天(udp数据传输与tcp数据传输)
- Centos7+LVS+Keepalived实现Exchange2016高可用性
- Bulls and Cows
- Java接口与继承作业
- Java Threads
- c++用gsoap调用webservice备忘
- [LeetCode] Search a 2D Matrix
- 快速理解prototype属性
- Visual Studio 2010敏捷之道
- Android中RecycleView使用GridLayoutManager时自适应高度
- FragmentManager源码简单分析
- 电商“焦虑”征
- 使用Doxygen生成libevent document(2.0.15)--CHM格式
- 导航控制器 中 代码设置屏幕旋转
- UGUI中的Canvas、Camera和Canvas Scaler