设计模式(Design Patterns)

——可复用面向对象软件的基础

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

设计模式的分类

总体来说设计模式分为三大类:

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:

并发型模式有:

主动对象模式(Active Object)。

阻碍模式(Balking)。

双重检查锁定(Double Checked Locking)。

守卫模式(Guarded)。

领导者/追随者模式(Leaders/Followers)。

监测对象模式(Monitor object)。

读写锁模式(Read write lock)。

调度模式(Scheduler)。

线程池:

Worker Thread,也称为工人线程或背景线程,不过一般都称为线程池。该模式主要在于,事先启动一定数目的工作线程。当没有请求工作的时候,所有的工人线程都会等待新的请求过来,一旦有工作到达,就马上从线程池中唤醒某个线程来执行任务,执行完毕后继续在线程池中等待任务池的工作请求的到达。

任务池:主要是存储接受请求的集合,利用它可以缓冲接受到的请求,可以设置大小来表示同时能够接受最大请求数目。这个任务池主要是供线程池来访问。

线程池:这个是工作线程所在的集合,可以通过设置它的大小来提供并发处理的工作量。对于线程池的大小,可以事先生成一定数目的线程,根据实际情况来动态增加或者减少线程数目。线程池的大小不是越大越好,线程的切换也会耗时的。

存放池的数据结构,可以用数组也可以利用集合,在集合类中一般使用Vector,这个是线程安全的。

Worker Thread的所有参与者:

1,Client参与者,发送Request的参与者

2,Channel参与者,负责缓存Request的请求,初始化启动线程,分配工作线程

3,Worker参与者,具体执行Request的工作线程

4,Request参与者

J2EE 模式
这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。

  • MVC 模式(MVC Pattern)
  • 业务代表模式(Business Delegate Pattern)
  • 组合实体模式(Composite Entity Pattern)
  • 数据访问对象模式(Data Access Object Pattern)
  • 前端控制器模式(Front Controller Pattern)
  • 拦截过滤器模式(Intercepting Filter Pattern)
  • 服务定位器模式(Service Locator Pattern)
  • 传输对象模式(Transfer Object Pattern)

设计模式的概念和分类相关推荐

  1. 设计模式的总览与分类

    设计模式的总览与分类 导语 设计模式是什么 设计模式的六大原则 开闭原则 里氏代换原则 依赖倒转原则 接口隔离原则 迪米特原则 合成复用原则 23种经典设计模式 创建型模式(5种) 结构型模式(7种/ ...

  2. (转载)安全漏洞概念及分类

    http://pan.baidu.com/s/1kT9LT4r 安全漏洞概念及分类 本文是一个安全漏洞相关的科普,介绍安全漏洞的概念认识,漏洞在几个维度上的分类及实 例展示. 安全漏洞及相关的概念 本 ...

  3. Java:异常的概念及分类、异常的处理、异常抛出及自定义异常

    异常概念 异常分类   Java异常处理机制 try ...catch...finally throw和throws 自定义异常 一.异常的概念         什么是异常?             ...

  4. 《大话数据结构》第9章 排序 9.2 排序的基本概念与分类

    9.2 排序的基本概念与分类 9.2.1 排序的定义         排序是我们生活中经常会面对的问题.同学们做操时会按照从矮到高排列:老师查看上课出勤情况时,会按学生学号顺序点名:高考录取时,会按成 ...

  5. FPGA的ip核之概念和分类

    ip核之概念和分类 IP(Intellectual Property)内核模块是一种预先设计好的甚至已经过验证的具有某种确定功能的集成电路.器件或部件.它有几种不同形式.IP内核模块有行为(behav ...

  6. 10 计算机组成原理第六章 总线 总线的概念与分类 总线性能指标 总线仲裁 总线操作和定时 总线标准

    文章目录 1 总线的概念与分类 1.1总线的定义 1.2 总线的特点 1.3 总线的特性 1.4 总线的分类 1.4.1 串行总线与并行总线 1.4.2 按总线功能分类 1.5 系统总线的结构 1.6 ...

  7. 18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理

    文章目录 1 IO设备的基本概念和分类 1.1 什么是I/O设备 1.2 I/O设备分类 2 IO控制器 2.1 I/O设备组成 2.2 I/O控制器功能 2.3 I/O控制器的组成 2.4 寄存器编 ...

  8. 复练-软考网规-IDS和IPS概念、分类、评价标准

    时间戳:2020年10月13日15:44:01 前情提要:IDS和IPS概念.分类.评价标准 IDs是英文" Intrusion Detection Systems'的缩写,中文意思是&qu ...

  9. Java简单类、变量详解(概念和分类、声明、命名、初始化)

    1初识JAVA简单类 (1)创建第一个Java程序的具体步骤: 第一步:创建一个工程,在Package Explorer空白区域中右击New->点击Java Project->填写Proj ...

最新文章

  1. jdk8新特性_JDK8与JDK9新特性学习
  2. 提高显微镜分辨率方法_超分辨显微镜研究获进展
  3. c++ 多重背包状态转移方程_【模板】各种背包问题amp;讲解
  4. C语言实验——打印数字图形(JAVA)
  5. “这块布的艺术成分都几高唧!”“有几高啊?”“三、四层楼那么高啦。”...
  6. ANT:fileset中使用exclude
  7. varchar 求和 非数值_考研线性代数 解题方法汇总(非知识点汇总)
  8. python调用摄像头录制视频_Python OpenCV使用摄像头捕获视频
  9. list删除null
  10. centos7 mysql添加密码_centos-在Centos7上更改mysql根密码
  11. 如何查看网页字体大小
  12. Markdown快速入门
  13. cf修改游戏客户端是什么意思_cf封号原因是非法篡改游戏客户端是什么意思
  14. DeepLabV3论文解读(空洞卷积/膨胀卷积 理解)
  15. Android 图片处理
  16. DEEPIN系统下安装wine
  17. 如何使用Flask和Heroku在Facebook Messenger上创建ChatBot
  18. 新手零基础21天Python打卡计划开始啦
  19. python 单词翻译_Python翻译:我想在senten中翻译多个单词
  20. mall 电商 api 接口文档

热门文章

  1. 为什么TCP连接至少3次握手
  2. 如何快速在CentOS搭建光盘【永久搭载光盘】
  3. Linux Shell脚本多循环语句练习题
  4. matlab中向量norm,【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关
  5. java代码优化_java代码之美(11)---java代码的优化
  6. python从mysql导出大量数据_python批量导出导入MySQL用户的方法
  7. python项目运行环境_python项目运行环境安装小结
  8. c语言while可以改为when,控制流:if、when、for、while
  9. rn如何测试数据请求时间_rn最新版测试
  10. win10系统要求配置_酒店智能化集成系统设计要素、系统功能要求和配置标准