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

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

    (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. 网站的robots.txt文件

    什么是robots.txt? robots.txt是一个纯文本文件,是爬虫抓取网站的时候要查看的第一个文件,一般位于网站的根目录下.robots.txt文件定义了爬虫在爬取该网站时存在的限制,哪些部分 ...

  2. LeetCode:3.Longest Substring Without Repeating Characters

    思路:看到题目首先想到最大字符串匹配KMP算法 public static int lengthOfLongestSubstring(String s) { int maxLength = 0; St ...

  3. OSI七层模型加协议

    OSI七层网络模型 TCP/IP四层概念模型 对应网络协议 应用层(Application) 应用层 HTTP.TFTP, FTP, NFS, WAIS.SMTP 表示层(Presentation) ...

  4. ArcPy:GeoJSON转ArcGIS Geometry

    import arcpy geojson = {"type":"Polygon","coordinates":[[[120.81878662 ...

  5. Vue学习(一):Vue实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Lambda表达式在Kotlin中怎样工作的:setOnClickListener的转换(KAD 18)

    作者:Antonio Leiva 时间:Mar 28, 2017 原文链接:https://antonioleiva.com/lambdas-kotlin-android/ 虽然,我在其它文章讲过一点 ...

  7. github 初始化操作小记

     Git作为一种越来越重要的工具,github又如此流行,现在就简单记录一下git的基础操作,希望能帮助大家快速体验入门! 1 查看本地是否存在”公钥”和”私钥” 如果没有,则执行: ssh-keyg ...

  8. xadmin站点管理面样样式控制

    xadmin可以使用的页面样式控制基本与Django原生的admin一直. list_display 控制列表展示的字段 search_fields 控制可以通过搜索框搜索的字段名称,xadmin使用 ...

  9. python终极篇 --- django 初识

    1. 下载: 命令行: pip install django==1.11.15 pip install -i 源 django==1.11.15 pycharm settings 解释器 点+号 输入 ...

  10. for循环再探

    摘要:for循环头的组成.for的执行流程 一.for 语句的组成 0. 举个例子 for (int val = 1; val <= 10; ++val) sum += val; 1. 循环头的 ...