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

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

    (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. mysql字符串拼接,存储过程

    添加字段: alter table `user_movement_log`Add column GatewayId int not null default 0 AFTER `Regionid` (在 ...

  2. 思杰VDI提示“The VDI is not available”

    前言:困扰已久的问题终于解决. 问题:客户反馈无法连接VDI. 解决过程:1.登录后台查看VDI状态为关机状态尝试重新启动提示如下图: 2.判断此VDI的启动盘出现问题(注:本人环境无数据盘) 3.查 ...

  3. 使用polarssl进行RSA加密解密

    RSA算法的原理就不提了,网上有很多介绍的文章,因为项目中使用RSA加密,所以需要找一个RSA加密的算法,之前尝试过使用Crypto++库,无奈Crypto++其中使用了大量的模版,各种继承,看着头大 ...

  4. C变量之间的转换

    int main(){ //定义了三个变量分别是abc ab的值分别是5跟8 c没有赋值  把b的值给c 把a的值给b 把c的值给a 形成了一个ab值得转换: int a=5; int b=8; in ...

  5. 问题 E: 完数与盈数

    问题 E: 完数与盈数 时间限制: 1 Sec  内存限制: 32 MB提交: 73  解决: 69[提交][状态][讨论版][命题人:外部导入] 题目描述 一个数如果恰好等于它的各因子(该数本身除外 ...

  6. Leetcode 686.重复叠加字符串匹配

    重复叠加字符串匹配 给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1. 举个例子,A = "abcd", ...

  7. ByteArrayInputStream/ByteArrayOutputStream 学习

    ByteArrayInputStream: byte[] buff = new byte[1024]; ByteArrayInputStream bAIM = new ByteArrayInputSt ...

  8. java rmi浅谈

    首先比较下RPC和RMI的差别: 首先java提供了RMI的api,jdk1.5之后虚拟机自动生成两个类:存根类stub和骨架类skelton. stub是给客户端的,当客户端调用远程对象的一个方法时 ...

  9. 201621044079WEEK06-接口、内部类

    作业06-接口.内部类 1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多 ...

  10. Maven中mirrors和repository的关系

    一.前言 之前没有搞清楚pom.xml里面配置的repositorys节点配置的仓库和mirrors里面配置的仓库的“镜像”间的关系,特意去搜索了相关内容,这边有篇文章讲得透彻,所以这边转载一下~ 二 ...