设计模式开篇综述(Java)
设计原则是规范,设计模式是技巧。如果在项目中能够灵活运用这些基础知识,那么我相信一定会得到意想不到的收获。
接下来的时间里,我将继续学习设计模式,将对每一个设计模式从以下几点进行分析和学习,如有不妥当或者理解错误的地方,欢迎大家指正和批评:
(1) 定义:描述该模式是什么,有什么样的作用;
(2) 问题描述:该模式是针对什么样的问题而出现的,由开发中遇到的问题而引入;
(3) 解决方案:给出合适的解决方案,进一步解释该模式的定义;
(4) 结构图:根据定义,绘制相关栗子的UML结构图;
(5) 举个栗子:给出具体的实例,进一步说明该模式的实现方式;
(6) 优缺点:系统地分析该模式的优缺点;
(7) 适用场景:综上所述,总结该模式的使用场景。
先总体了解一下常用的22种设计模式的定义吧,对这些设计模式先有一个大致的印象:
1. 简单工厂模式:通过专门定义一个工厂类来负责创建其它类的实例,而被创建的实例通常都拥有共同的父类。
2. 工厂方法模式:定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。
3. 抽象工厂模式:为创建一组相关的或相互依赖的对象提供一个接口,而无需指定他们的具体类。
4. 单例模式:一个类有且仅有一个实例,并且自行实例化向整个系统提供。
5. 原型模式:使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
6. 建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。
7. 适配器模式:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
8. 桥接模式:将抽象和实现解耦,使两者可以独立的变化。
9. 组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。
10. 装饰模式:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。
11. 外观模式:为子系统的一组接口提供一个统一的入口,定义一个高层接口,这个接口是的这个子系统更加容易使用。
12. 享元模式:运用共享技术有效地支持大量细粒度的对象。
13. 代理模式:为其他对象提供一种代理以控制对这个对象的访问。
14. 责任链模式:很多对象由每个对象对其下家额引用而连接起来形成一条链,请求在这个链上传递,直到链上的某一个对象决定处理此请求为止,从而避免请求的发送者和接受者之间的耦合关系。
15. 命令模式:将一组行为抽象为对象,实现二者之间的松耦合。
16. 迭代器模式:提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。
17. 中介者模式:使用一个中介对象封装一系列的对象交互,中介者使各个对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
18. 备忘录模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后将此对象恢复到原先的保存状态。
19. 观察者模式:对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。
20. 状态模式:允许一个对象在其内部状态改变时改变它的行为,对象看起来好像修改了它的类。
21. 策略模式:定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换,让算法独立于使用它的客户而独立变化。
22. 访问者模式:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这引起元素的新的操作。
Github项目地址:https://github.com/chenxkang/DesignPatternDemo
参考资料:百度百科
设计模式开篇综述(Java)的更多相关文章
- Java设计模式开篇
在所有的设计模式开篇中,总是说一个好的架构,或多或少都会有设计模式的出现.当然或多或少也会使用设计模式的相关原则: SOLID+迪米尔原则 1.优化代码的第一步:单一职责原则 S:单一职责链原则:英文 ...
- Java网络编程和NIO详解开篇:Java网络编程基础
Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...
- 23种设计模式全解析 (java版本)
转自:http://blog.csdn.net/longyulu/article/details/9159589 其中PHP常用的五种设计模式分别为:工厂模式,单例模式,观察者模式,策略模式,命令模式 ...
- 从设计模式说起JAVA I/O流
从设计模式说起JAVA I/O流 之前写过一篇I/O流的入门介绍,直到最近看了设计模式,顺带理下I/O流的设计思路. JAVA类库中的I/O类分成输入和输出两部分,通过继承,任何自InputStrea ...
- JAVA设计模式——开篇
设计模式很重要,重要性我就不再复述了.最主要的是,通常我们在写一定量代码后,常用的方法什么的都熟悉后,想再提高代码能力,我找到的最好的方法还是去学习,理解设计模式.不理解设计模式,看一些开源框架和ja ...
- java设计模式之综述
一.什么是设计模式 设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系 ...
- 设计模式总结(Java)—— 适配器模式
适配器模式中引入了一个被称为适配器(Adapter)的包装类,而它所包装的对象称为适配者(Adaptee),即被适配的类.适配器的实现就是把客户类的请求转化为对适配者的相应接口的调用.也就是说:当客户 ...
- 设计模式总结(Java)—— 观察者模式
概述 它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应.在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多 ...
- 设计模式总结(Java)—— 单例模式
1. 定义 为了确保一个类有且仅有一个实例,而且自行实例化并向整个系统提供这个实例. 2. 使用场景 确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有 ...
随机推荐
- 使用 -命令行-给-python-安装whl文件,
whl文件下载到哪个位置,命令行就切入到哪里: 我的在D盘目录下,所以命令行切进D盘(CD):方式如下: 列出<用户目录>下的目录(dir): 因为我安装了2个版本的python所以给py ...
- 20145202马超 2006-2007-2 《Java程序设计》第2周学习总结
20145202马超 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 第三章主要讲了各种变量的设置以及流程控制,基本上都和c是一样的.print是不太一样的, ...
- PHP.39-扩展-锁机制解决并发-MySQL锁、PHP文件锁
锁机制适用于高并发场景:高并发订单.秒杀…… apache压力测试 Mysql锁详解 语法 加锁:LOCK TABLE 表名1 READ|WRITE, 表名2 READ|WRITE ......... ...
- 1826: [JSOI2010]缓存交换
1826: [JSOI2010]缓存交换 https://www.lydsy.com/JudgeOnline/problem.php?id=1826 分析: 简单的贪心,然后调啊调...最近怎么了,码 ...
- C#窗口抖动
用过QQ的窗口抖动功能吧.是不是觉得很神奇?很有意思?其实,仔细想想,使用的原理还是挺简单的:让窗口的位置不断快速地发生变化. 说出了原理,是不是一下恍然大悟?顿时理解了.我以前也想过如何实现这个功能 ...
- Apache 服务器性能评估
1 查看当前并发连接数 netstat -an | grep ESTABLISHED | wc -l 2 查看当前进程数 ps aux|grep httpd|wc -l
- 云计算之路-阿里云上:原来“黑色0.1秒”发生在socket读取数据时
在昨天的博文(云计算之路-阿里云上:读取缓存时的“黑色0.1秒”)中我们犯了一个很低级的错误——把13ms算成了130ms(感谢陈硕发现这个错误!),从而对问题的原因作出了错误的推断,望大家谅解! 从 ...
- 微信营销 推广 会议签到 活动签到 复用微信3D动画签到系统
适用场合 本软件适合各行各业,尤其世界500强上市公司,推广产品,聚集微信粉丝和人气.如大型展销会,新产品发布,主题活动推广,年会晚会等.各种商业和演出场合. 软件有试用版可供下载试用. 特色功能 顾 ...
- 序列化反序列化--Xstream的使用
之前讲了fastjson的使用--将JavaBean与json对象之间互相转换. 该篇文章,教大家使用Xstream来实现XMl与JavaBean的转换. 第一步: 通过maven引入XStream的 ...
- 第三十三篇 Python中关于OOP(面向对象)的常用术语
面向对象的优点 从编程进化论可知,面向对象是一种更高等级的结构化编程方式,它的好处主要有两点: 1. 通过封装明确了内外,你做为类的缔造者,你就是女娲,女娲造物的逻辑别人无需知道,女娲想让你知道,你才 ...