设计原则是规范,设计模式是技巧。如果在项目中能够灵活运用这些基础知识,那么我相信一定会得到意想不到的收获。

  接下来的时间里,我将继续学习设计模式,将对每一个设计模式从以下几点进行分析和学习,如有不妥当或者理解错误的地方,欢迎大家指正和批评:

    (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)的更多相关文章

  1. Java设计模式开篇

    在所有的设计模式开篇中,总是说一个好的架构,或多或少都会有设计模式的出现.当然或多或少也会使用设计模式的相关原则: SOLID+迪米尔原则 1.优化代码的第一步:单一职责原则 S:单一职责链原则:英文 ...

  2. Java网络编程和NIO详解开篇:Java网络编程基础

    Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...

  3. 23种设计模式全解析 (java版本)

    转自:http://blog.csdn.net/longyulu/article/details/9159589 其中PHP常用的五种设计模式分别为:工厂模式,单例模式,观察者模式,策略模式,命令模式 ...

  4. 从设计模式说起JAVA I/O流

    从设计模式说起JAVA I/O流 之前写过一篇I/O流的入门介绍,直到最近看了设计模式,顺带理下I/O流的设计思路. JAVA类库中的I/O类分成输入和输出两部分,通过继承,任何自InputStrea ...

  5. JAVA设计模式——开篇

    设计模式很重要,重要性我就不再复述了.最主要的是,通常我们在写一定量代码后,常用的方法什么的都熟悉后,想再提高代码能力,我找到的最好的方法还是去学习,理解设计模式.不理解设计模式,看一些开源框架和ja ...

  6. java设计模式之综述

    一.什么是设计模式 设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系 ...

  7. 设计模式总结(Java)—— 适配器模式

    适配器模式中引入了一个被称为适配器(Adapter)的包装类,而它所包装的对象称为适配者(Adaptee),即被适配的类.适配器的实现就是把客户类的请求转化为对适配者的相应接口的调用.也就是说:当客户 ...

  8. 设计模式总结(Java)—— 观察者模式

    概述 它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应.在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多 ...

  9. 设计模式总结(Java)—— 单例模式

    1. 定义 为了确保一个类有且仅有一个实例,而且自行实例化并向整个系统提供这个实例. 2. 使用场景 确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有 ...

随机推荐

  1. ABAP CDS ON HANA-(8)算術式

    Arithmetic expression in CDS View Allowed Arithmetic operators in CDS view. CDS View- @AbapCatalog.s ...

  2. Android面试收集录 蓝牙与WiFi

    1.打开手机中的蓝牙功能有哪些方法? 法1:使用Intent  ==>new Intent(BluetoothAdaper.ACTION_REQUEST_ENABLE); startActivi ...

  3. [Windows]_[C/C++]_[如何调试子进程]

    场景 1.VC++ 的程序A在启动程序C时, 如果需要调试程序C的话一般有两种, 一种是通过菜单 调试->附加到进程的方式来调试程序, 缺点就是这个进程必须先启动, 但是一启动的话有可能就执行了 ...

  4. django生产环境中部署

    https://www.cnblogs.com/chenice/p/6921727.html 本节内容 uwsgi 介绍 uwsgi安装使用 nginx安装配置 django with nginx 如 ...

  5. 深入浅出 Webpack

    深入浅出 Webpack 评价 Webpack 凭借强大的功能与良好的使用体验,已经成为目前最流行,社区最活跃的打包工具,是现代 Web 开发必须掌握的技能之一.作者结合自身的实战经验,介绍了 Web ...

  6. JMeter Plugins Manager

    JMeter插件管理器官网: https://jmeter-plugins.org/ 把jmeter-plugins-manager-0.16.jar放到C:\JMeter\apache-jmeter ...

  7. redux使用过程中遇到的两个致命的关键点

    一.在reducer中,返回的state必须是全新的对象,否则,redux不会执行listening方法,因为redux会认为state没有更新过,没必要重新渲染view. 出现问题的例子: cons ...

  8. Python 学习笔记之 Numpy 库——文件操作

    1. 读写 txt 文件 a = list(range(0, 100)) a = np.array(a) # a.dtype = np.int64 np.savetxt("filename. ...

  9. [Java-Idea]解决idea启动项目报错:Unable to open debugger port(127.0.0.1:53046):java.net.SocketException"socket closed

    命令行窗口,执行命令:netstat -aon|findstr 9030 查找占用端口的进程 taskkill -f -pid 11331

  10. CentOS 6.5 下安装redis

    1.登录虚拟机后,直接输入命令:yum -y install redis 会出现一个错误: 是因为少了epel源, 2.运行:yum -y install epel-release 最后出现 Comp ...