简单说两句

本文首发公众号【一名打字员】

对不住各位老铁了,年前说好要更几波JAVA的东西,又偷懒了,没办法,在这里用小锤锤偷偷锤了自己几下。由于工作原因,更新时间不定,各位老铁有问题可以私聊我哈。

对于初学者或者是正在向中高级的Java程序猿(打字员)来说,时刻梳理自己所掌握的知识是十分重要的,近期本打字员会整理一下关于J2EE下面的几种常用的设计模式,并逐个解析,希望大家能够一起巩固一下相关掌握的知识点。

为什么要用设计模式

相信很多人都有这个疑问,有的人说在50万行以下的项目中,设计模式基本是没有用的。当然,除了让我们code显得更加专业之外,在自己所学习或者工作的项目中,适当合理的使用设计模式,能够给项目带来很大的好处。首先,使用了合理的模式,团队里进行沟通协作会很方便,交流成本有时候特别高,特别是在程序员之间。其次恰当的使用设计模式可以用以解决特定场景的问题的一系列方法,帮助我们改善系统的设计,增强系统的健壮性、可扩展性,为以后铺平道路。

最后用网络上的一句概括来说,设计模式(Designpattern)就是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

模式概览

在实际的学习或者工作中,大家或多或少的会接触或者使用一些Java的设计模式,在Java中存在23种设计模式,其图如下:

其中主要分为三大类:

  • 创建型模式

  • 结构型模式

  • 行为型模式

在文末会贴出所有的设计模式,其中本打字员映象里自己常用的模式一般有:

  1. 工厂模式、工厂方法模式、抽象工厂模式、单例模式等,这些都属于创建型模式。
  2. 观察者模式,模版模式,策略模式等,这些都属于行为型模式。
  3. 包装模式,适配器模式,组合模式,代理模式等,这些属于结构型模式。

六大原则

在学习使用设计模式的时候,我们需要了解这六大原则:

  • 单一原则

意思就是,我们在编写bug,不对,编写代码的时候在一个功能类中尽量负责单一的功能,这个功能应当尽量的烤炉周全,保持极致。

  • 里氏替换原则

这个原则可能大家乍一眼不怎么能够理解,与C#中里氏替换原则一致,这个意思就是一个子类能够替换父类并且能够正常的工作。有机智的童鞋要举手提问了,那Java中的多态会不会违背这种原则呢,其实不然。所谓的里氏替换原则就是让你的某一段程序耦合于基类或者接口,而不是具体继承了基类的子类或实现接口的具体类型。仅替换子类不会让你这个程序的属性有所改变。所谓多态机制,则是给了你达成上述原则的其中一种能力。

  • 接口隔离原则

这个应该比较好理解,见字如意。这个接口也叫做接口最小化原则,强调的是一个接口拥有的行为应该尽可能的小。

  • 依赖倒置原则

这个强调了高层模块不该依赖于低层模块,二者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象。

  • 迪米特原则

也称最小知道原则,即一个类应该尽量不要知道其他类太多的东西,不要和陌生的类有太多接触。

  • 开闭原则

其实本打字员也对这个原则有点模糊,但是大体的意思就是一句话对修改关闭,对扩展开放。在网上浏览相关文章的时候提到过一句在大话设计模式中出现的总结,“用抽象构建框架,用细节实现扩展”。我想这句话也许是对整体的原则做出的最好的解释了吧。

写在最后

说实话,本打字员也不知道自己何时放弃,会停止编程,会不再撸代码,因为这份工作对精神上的消耗确实很大。但是既然我们依然坚持在这个岗位上,我们就应该本着一名程序员的心态,去学习新的技术与知识,维护和巩固现有的知识点,为成为自己想象中的自己而努力吧。

附:

模式 名称 所属分类
Abstract Factory 抽象工厂模式 创建型
Builder 建造模式 创建型
Factory Method 工厂方法模式 创建型
Prototype 原始模型模式 创建型
Singleton 单例模式 创建型
Adapter 适配器(变压器)模式 结构型
Bridge 桥梁模式 结构型
Composite 合成模式 结构型
Decorator 装饰模式 结构型
Facade 门面模式 结构型
Flyweight 享元模式 结构型
Proxy 代理模式 结构型
Chain Of Responsibility 责任链模式 行为型
Command 命令模式 行为型
Interpreter 解释器模式 行为型
Iterator 迭代子模式 行为型
Mediator 调停者模式 行为型
Memento 备忘录模式 行为型
Observer 观察者模式 行为型
State 状态模式 行为型
Strategy 策略模式 行为型
Template Method 模板方法模式 行为型
Visitor 访问者模式 行为型

J2EE下的常用设计模式相关推荐

  1. 常用设计模式之白话精简理解及应用-下

    工厂模式 上一篇我们先学习了单例和模板方法两个设计模式,单例模式在JDK中java.lang.Runtime使用饿汉式还有Spring从单例池获取bean的方法getSingleton,Spring解 ...

  2. 7 种 Javascript 常用设计模式学习笔记

    7 种 Javascript 常用设计模式学习笔记 由于 JS 或者前端的场景限制,并不是 23 种设计模式都常用. 有的是没有使用场景,有的模式使用场景非常少,所以只是列举 7 个常见的模式 本文的 ...

  3. 打死都要记住!微服务架构的常用设计模式!

    作者:duanxz 来源:cnblogs.com/duanxz/p/3514895.html 大家好,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许我休息一下哈).今天跟大家分享微服务架 ...

  4. J2EE开发之常用开源框架介绍

    From: http://blog.csdn.net/kuyuyingzi/article/details/38351231 主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当 ...

  5. Java常用设计模式————原型模式(一)

    介绍 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. 原型模式用于创建重复的对象,同时又能保证性能.当直接创建对象的代价比较大时,则采用 ...

  6. 模板设计模式_C常用设计模式——模板方法模式

    C常用设计模式系列,我们是以策略模式开头的,因为它太简单太实用了,本篇讲的模板方法模式(Template Method),同样简单又实用.模板方法模式堪称局部代码分离关注点的神器. 代码里有个流程A, ...

  7. 23种常用设计模式的UML类图

    23种常用设计模式的UML类图 本文UML类图参考<Head First 设计模式>(源码)与<设计模式:可复用面向对象软件的基础>(源码)两书中介绍的设计模式与UML图. 整 ...

  8. 初学Java常用设计模式之——原型模式

    声明:转载请附上原文链接 提示:标题序号从3开始,是照应不同设计模式笔记发布的顺序而定的,比如,第上一篇文章 初学Java常用设计模式之--工厂模式 序号从2开始. 标题后面之所以加上了解,是因为相对 ...

  9. 初学Java常用设计模式之——工厂模式

    声明:转载请附上原文链接 提示:标题序号从2开始,是照应不同设计模式笔记发布的顺序而定的,比如,第上一篇文章 初学Java常用设计模式之--单例模式 序号从1开始 2. 工厂模式(常用) ⼯⼚模式介绍 ...

最新文章

  1. c语言程序设计编辑与调试环境实验报告,01程序设计基础实验报告_C语言程序设计基础.doc...
  2. VS2015编译Boost1.64
  3. python面向对象编程的优点-Python语言有哪些优点?
  4. VS2008如何自动添加消息映射
  5. 结构体里有指针 scanf赋值_C++|链表中常见的链表节点指针操作
  6. 345.反转字符串中的元音字母
  7. pyqtgraph中文文档
  8. 《STK二次开发 C++版》S1:STK介绍
  9. SQL注入的严重危害之拖库实例
  10. 保护模式下的80386及其编程04:中断及异常
  11. Android根build.gradle中buildscript和allprojects的作用和区别是什么
  12. android 辅助功能(无障碍)
  13. 虚拟机挂载ISO文件
  14. JAVA学习6-集合工具类、流
  15. # Python+SQLite## 医院住院信息管理软件
  16. 【外行也能看懂的RabbitMQ系列(二)】—— RabbitMQ的Web管理界面(rabbitmq_management)详解(内含Topic模式通配符实操)
  17. 计算机网络基础——访问控制列表
  18. 隐藏电脑桌面desktop.ini文件图标方法
  19. 三维计算机辅助设计学什么,《三维计算机辅助设计》自学指导书
  20. ISO9001内审员需要知道的内容分享

热门文章

  1. spring + redis 实现数据的缓存
  2. Java集合容器全面分析
  3. Python常见问题(2):编程问题 Programming FAQ
  4. 大白话解析模拟退火算法、遗传算法入门
  5. Hadoop HDFS的一些相关代码code
  6. 落地华东总部、上线创新云、签约AIoT产业基金……京东云南京“新动作”
  7. SSM 框架 Maven项目整合实例
  8. redis和memcached的区别(总结)
  9. vue native
  10. 设置Eclipse的workspace路径