常见的设计模式有:单例模式,工厂模式,策略模式,代理模式,中介者模式,装饰者模式。

单例模式

保证一个类仅有一个实例,并提供一个访问它的全局访问点。实现的方法为先判断实例存在与否,如果存在则直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象

工厂模式

工厂模式通常会分成3个角色:

工厂角色-负责实现创建所有实例的内部逻辑.

抽象产品角色-是所创建的所有对象的父类,负责描述所有实例所共有的公共接口

具体产品角色-是创建目标,所有创建的对象都充当这个角色的某个具体类的实例

代理模式

代理模式:为对象提供一个代用品或占位符,以便控制对它的访问

例如实现图片懒加载的功能,先通过一张loading图占位,然后通过异步的方式加载图片,等图片加载好了再把完成的图片加载到img标签里面。

中介者模式

中介者模式的定义:通过一个中介者对象,其他所有的相关对象都通过该中介者对象来通信,而不是相互引用,当其中的一个对象发生改变时,只需要通知中介者对象即可

例如Server和ServerImpl

装饰者模式

装饰者模式的定义:在不改变对象自身的基础上,在程序运行期间给对象动态地添加方法

通常运用在原有方法维持不变,在原有方法上再挂载其他方法来满足现有需求

谈谈你对设计模式的理解,在 Java 开发中常用的设计模式有哪些,举例说明你在项目中使用过的设计模式及其作用。的更多相关文章

  1. 设计模式(一)单例模式:创建模式 ASPNET CORE WEB 应用程序的启动 当项目中 没有STARTUP.CS 类如何设置启动 配置等等

    设计模式(一)单例模式:创建模式 先聊一下关于设计的几个原则(1)单一原则(SRP):一个类应该仅有一个引起它变化的原因 :意思就是 (一个类,最好只负责一件事情,并且只有一个引起它变化的原因(2)开 ...

  2. Java开发工具IntelliJ IDEA使用教程:创建新的Andriod项目

    IntelliJ IDEA社区版作为一个轻量级的Java开发IDE,本身是一个开箱即用的Android开发工具. 注意:在本次的教程中我们将以Android平台2.2为例进行IntelliJ IDEA ...

  3. Java开发小技巧(三):Maven多工程依赖项目

    前言 本篇文章基于Java开发小技巧(二):自定义Maven依赖中创建的父工程project-monitor实现,运用我们自定义的依赖包进行多工程依赖项目的开发. 下面以多可执行Jar包项目的开发为例 ...

  4. java将类和函数封装成jar,然后在别的项目中使用这个jar包

    本来想用idea安装的,不过用maven生成后发现jar有20,30M肯定不对,后来还是用eclipse生成了,方便很多 环境: eclipse luna,jdk1.8_112 1.生成jar包,首先 ...

  5. java开发优化常用的快捷键

    快速打印的输出语句:输入syso,然后按alt+/,即可 快速删除一行:ctrl+D 让代码块缩进:选中要缩进的代码,然后按tab键 让代码块退格:选中要退格的代码,然后按shift+tab键 格式化 ...

  6. Java开发Linux常用命令

    linux下tomcat服务的相关命令 http://blog.csdn.net/zhangzhikaixinya/article/details/8224307 linux下实时查看tomcat运行 ...

  7. IDEA工具java开发之 常用窗口

    ◆project窗口  ◆structure窗口  ◆todo窗口  ◆favorites窗口  ◆termimal窗口 此窗口默认打开的时cmd,所以才这里可以操作任何cmd可以操作的内容, 一般次 ...

  8. IDEA工具java开发之 常用插件 git插件 追加提交 Code Review==代码评审插件 撤销提交 撤销提交 关联远程仓库 设置git 本地操作

    ◆git 插件 请先安装git for windows ,git客户端工具 平时开发中,git的使用都是用可视化界面,git命令需要不时复习,以备不时之需 1.环境准备 (1)设置git (2)本地操 ...

  9. Android开发java开发之常用英文词汇汇总。程序员必备英语单词

    ANR  (Application Not Response )  bundle 捆, entire 整个的,完整的 lifetime 生命周期 entire lifetime 完整生命周期 visi ...

  10. 资料汇总--java开发程序员必备技能

    1.  熟练使用Java语言进行面向对象程序设计(面向对象:继承.多态.抽象): 有良好的编程习惯(阿里开发手册  链接:http://pan.baidu.com/s/1dFEA6cT 密码:kqj4 ...

随机推荐

  1. Linux日志 查找关键字及其前后的信息

      文章<五分钟扫盲:25个工作中常用的Linux命令>介绍了常用的Linux命令,属于理论知识,这里知行合一,介绍如何从Linux日志中通过关键字过滤出我们需要的信息.   这里以查看名 ...

  2. SpringBoot启动类没有启动按钮,java文件变为灰色的解决策略

      今天在查看Spring Boot项目的时候发现自己的项目变成了上面这个样子,无法执行main函数. 解决方法(上述操作可以忽略):选择我们项目的pom文件,然后右键选择 Add as Maven ...

  3. Java中判断某一字符串是否包含数字、字母和中文

         在Java中判断某一字符串是否为纯英文.纯数字.英文和数字的组合等时,通常使用正则str.matches匹配,告诉这个字符串是否与给定的正则表达式匹配.  各种字符的unicode编码的范围 ...

  4. Spring注解之@Async:Spring Boot实现异步调用

    前言 在日常开发过程中,会遇到一些需求是和主业务逻辑低耦合的,不要求和主业务逻辑同步进行,比如记录日志信息.发送消息通知电子邮件.生成PDF合同和导出报表等需求,而且,这些需求往往处理起来比较耗时.这 ...

  5. Qt 图片轮播

    最近研究了一下图片轮播,主要是用到了QPropertyAnimation这个类,具体代码示例如下: main.cpp #include <QApplication> #include &q ...

  6. 电脑上多个git账户并且为不同仓库设置不同的用户名

    说明 生成多个公钥命令 我这里以Gitee和我公司内网Gitlab举例,打开git bash (右键,Git Bash Here) 首先生成Gitee的 依次执行以下命令 git config --g ...

  7. WPF绑定与通知属性到界面

    绑定与通知属性到界面 本文同时为b站WPF课程的笔记,相关示例代码 前言 在上一篇文章C#代码事件里面,我们介绍了利用给控件命名的方式,在后端代码中访问并修改属性.这样子直截了当,但是这样后端代码依赖 ...

  8. Visual Studio 17.3

    Visual Studio 2022 17.3新UI

  9. js判断一个变量是否存在值得简单方法

    在编码过程中,有时候我们需要对一个变量判断其是否有值,这里有一种比较不错的方法判断: !!variable //返回True为存在值,返回False为不存在值 注意是双感叹号"!!" ...

  10. Vertx 实现webapi实战项目(四)

    本节主要介绍使用消息解析和handler分发 一:定义一个常量类,储存消息id public class HandlerCode { /***** 测试接口 ******/ public static ...