JAVA设计模式--简单介绍

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、简介

Design pattern 是众多软件开发人员经过漫长的试验和错误总结出来的在软件开发过程中面临一般问题的解决方案,代表着最佳实践。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。

二、分类

2.1、创建型模式(Creational Patterns)

这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用新的运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

创建型模式包含:

(1)工厂模式(Factory Pattern)

(2)抽象工厂模式(Abstract Factory Pattern)

(3)单例模式(Singleton Pattern)

(4)建造者模式(Builder Pattern)

(5)原型模式(Prototype Pattern)

2.2、结构型模式(Structural Patterns)

这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得的新功能的方式。

结构型模式包含:

(1)适配器模式(Adapter Pattern)

(2)桥接模式(Bridge Pattern)

(3)过滤器模式(Filter、Criteria Pattern)

(4)组合模式(Composite Pattern)

(5)装饰器模式(Decorator Pattern)

(6)外观模式(Facade Pattern)

(7)享元模式(Flyweight Pattern)

(8)代理模式(Proxy Pattern)

2.3、行为型模式(Behavioral Patterns

这些设计模式特别关注对象之间的通信

行为型模式包含:

(1)责任链模式(Chain of Responsibility Pattern)

(2)命令模式(Command Pattern)

(3)解释器模式(Interpreter Pattern)

(4)迭代器模式(Iterator Pattern)

(5)中介者模式(Mediator Pattern)

(6)备忘录模式(Memento Pattern)

(7)观察者模式(Observer Pattern)

(8)状态模式(State Pattern)

(9)空对象模式(Null Object Pattern)

(10)策略模式(Strategy Pattern)

(11)模板模式(Template Pattern)

(12)访问者模式(Visitor Pattern)

2.4、J2EE型模式(J2EE Patterns)

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

(1)MVC 模式(MVC Pattern)

(2)业务代表模式(Business Delegate Pattern)

(3)组合实体模式(Composite Entity Pattern)

(4)数据访问对象模式(Data Access Object Pattern)

(5)前端控制器模式(Front Controller Pattern)

(6)拦截过滤器模式(Intercepting Filter Pattern)

(7)服务定位器模式(Service Locator Pattern)

(8)传输对象模式(Transfer Object Pattern)




转载于:https://my.oschina.net/CandyDesire/blog/354222

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单函数

【【【2013-9-13】】】--模糊查询 关键字 like--与通配符联合使用(_任意一个字符;%任意长度的字符;转义字符/和关键字escape联用)select * from emp where job like %/%% escape /;select * from emp where comm is not null;com…

第 6-3 课:SpringBoot 核心 + 面试题

为什么要用 Spring Boot? Spring Boot 来自于 Spring 大家族,是 Spring 官方团队(Pivotal 团队)提供的全新框架,它的诞生解决了 Spring 框架使用较为繁琐的问题。Spring Boot 的核心思想是约定优于配置,让开发人员不需要配置任何 XML 文件,就可以像 Maven 整合 Jar 包一…

Java ObjectOutputStream writeDouble()方法与示例

ObjectOutputStream类writeDouble()方法 (ObjectOutputStream Class writeDouble() method) writeDouble() method is available in java.io package. java.io包中提供了writeDouble()方法 。 writeDouble() method is used to write the given 8 bytes (i.e. 64 bit) double v…

为什么是PID控制

在进入正式话题之前需要引入四个概念:稳态误差、终值定理、幅角条件和系统稳定的充要条件。 稳态误差:系统达到稳定状态后,系统的实际输出量与系统希望的输出量之间的偏差。 终值定理:设有连续函数f(t)f(t)f(t),当t趋于…

WinForm C#全局错误捕捉处理【整理】

1 static class Program2 {3 /// <summary>4 /// 应用程序的主入口点。5 /// </summary>6 [STAThread]7 static void Main()8 {9 try 10 { 11 12 //添加事件处理…

第 6-6 课:消息队列面试题汇总

1.消息队列的应用场景有哪些? 答:消息队列的应用场景如下。 应用解耦,比如,用户下单后,订单系统需要通知库存系统,假如库存系统无法访问,则订单减库存将失败,从而导致订单失败。订单系统与库存系统耦合,这个时候如果使用消息队列,可以返回给用户成功,先把消息持久化…

在新建FileInputStream时使用当前相对路径或者绝对路径作为参数的问题

当new一个FileInputStream时&#xff0c;想使用相对路径这样无论我的服务端部署到哪里&#xff0c;都可以一直用一个文件夹而不必修改程序的路径代码&#xff0c;当然首先我用的绝对路径来做实验&#xff0c;保证能够成功通信&#xff0c;使用绝对路径时要注意路径的分隔符可以…

卡尔曼滤波器推导

注&#xff1a;受控制领域大牛CAN博士启发&#xff0c;受益匪浅&#xff0c;作此文以为笔记。 简介 设 卡尔曼滤波器是从测量值ZZZk的平均数开始的。开始推导&#xff1a; 由上式可知   也就是说随着kkk的增大&#xff0c;测量结果Zk不在重要&#xff0c;因为已经获得了足…

第 6-7 课:Java 分布式框架面试题合集

1.什么是 ZooKeeper? 答:ZooKeeper 是一个开源的分布式应用程序协调服务,是一个典型的分布式数据一致性解决方案。设计目的是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的系统,并以一系列简单易用的原子操作提供给用户使用。 2.ZooKeeper 提供了…

Oracle date 插入显示公元前日期

显示公元前日期很简单&#xff1a;--先创建一个表 create table test (d date);--插入一条记录 --插入的日期要注意 --1、“ - ”&#xff08;负号&#xff09; 表示公元前 --2、“ s ” 格式控制符 insert into test values(to_date(-2000-12-2, syyyy-mm-dd));--查询一下 --要…

cocos2dx3.2文件结构和代码结构

既然选定了cocos2dxlua的原生方式来开发&#xff0c;首先要确定的是使用哪个版本的cocos2dx&#xff0c;先看看github上的changelog和releasenote&#xff0c;然后在google里搜索一下&#xff0c;参考了jacky的博客http://zengrong.net/post/2100.htm&#xff0c;最终选择了coc…

java 方法 示例_Java集合的lastlastIndexOfSubList()方法和示例

java 方法 示例集合类lastIndexOfSubList()方法 (Collections Class lastIndexOfSubList() method) lastIndexOfSubList() method is available in java.util package. lastIndexOfSubList()方法在java.util包中可用。 lastIndexOfSubList() method is used to return the star…

Redis 面试题汇总

1.Redis 使用场景有哪些? 答:Redis 使用场景如下: 记录帖子点赞数、点击数、评论数缓存近期热帖缓存文章详情信息记录用户会话信息2.Redis 有哪些功能? 答:Redis 功能如下: 数据缓存功能分布式锁的功能支持数据持久化支持事务支持消息队列3.Redis 支持哪些数据类型? …

改进的PID算法

位置式PID算法 位置式PIDPIDPID算法是一种比较直观的的PIDPIDPID算法&#xff0c;如系统框图中所示&#xff0c;ininin表示设定值&#xff0c;errorerrorerror表示差值&#xff0c;uuu表示控制器输出值&#xff0c;outoutout表示被控量。算法表达式如下&#xff1a; 增量式PI…

奇怪的排序

P6: 奇怪的排序 Description: 春秋战国时期&#xff0c;赵国地大物博&#xff0c;资源非常丰富&#xff0c;人民安居乐业。但许多国家对它虎视眈眈&#xff0c;准备联合起来对赵国发起一场战争。 显然&#xff0c;面对多个国家的部队去作战&#xff0c;赵国的兵力明显处于劣势。…

Oracle 练习题P256

--根据Oracle数据库scott模式下的emp表和dept表&#xff0c;完成下列操作。--&#xff08;1&#xff09;查询20号部门的所有员工信息select * from emp where deptno 20;--&#xff08;2&#xff09;查询所有工种为CLERK的员工的员工号、员工名和部门号select empno,ename,dep…

oracle中dbms_如何在DBMS中找到关系的最高范式?

oracle中dbmsTo find the highest normal form of a relation, you have to first understand the basics of Functional dependency, Candidate keys, and Normal Forms. 要查找关系的最高范式 &#xff0c;您必须首先了解功能依赖项 &#xff0c;候选键和范式的基础。 In re…

MySQL 面试题汇总

1.说一下 MySQL 执行一条查询语句的内部执行过程? 答:MySQL 执行一条查询的流程如下: 客户端先通过连接器连接到 MySQL 服务器;连接器权限验证通过之后,先查询是否有查询缓存,如果有缓存(之前执行过此语句)则直接返回缓存数据,如果没有缓存则进入分析器;分析器会对查…

几种简单电路知识汇总

这篇文章用于记录平时设计电路或者在书中遇到的一些电路方面的知识&#xff0c;会不定期更新。就先从运算放大器开始&#xff0c;对此做个简单的介绍。 运算放大器 说到运算放大器就不得不说两个概念&#xff0c;虚短与虚断。 虚短&#xff1a; 在理想情况下&#xff0c;运算…

Oracle 创建表 练习题

a) 建立下列教学管理用的数据表。注意&#xff0c;表名和字段名都是英文。 学生表&#xff08;student&#xff09; 字段 名称 数据类型 约束 学号 S_NO CHAR(6) 主键 姓名 S_NAME CHAR(10) 非空 性别 S_SEX CHAR(2) 只取男、女 出生日期 S_BIRTHDAY DA…