要学习设计模式,首先要明白设计模式,就是为实现某一种或某一组功能提供的代码编码方式.它没有固定的套路,只有约定俗成的风格.所有编码者可以根据已有的设计模式开放思维,设计出自己的设计模式,也会在无意中使用某些设计模式.

接下来我们举几个常用的模式例子

一..>单例模式

1.作用

  -保证整个应用中某个实例有且只有一个

2.应用场合

  -某些对象只需在应用在创建一个

3.饿汉模式 -- 加载类时的速度比较慢,运行时调用类的速度比较快,所属线程安全

  -所属类加载时,不论其实例是否调用,都会被加载

   //1.私有化默认构造方法

private Singleton(){}



//2.创建类的唯一实例

private static Singleton instance = new Singleton();



3.//提供一个获取实例的方法,并将此方法转换为类方法

return instance;

}

调用

Singleton s1 = Singleton.getInstance();



4.懒汉模式 -- 加载类时的速度比较快,运行时调用线程的速度比较慢,线程不安全

  在提供给外部的构造方法中进行实例化

二..>代理模式 -->Spring的核心设计思想

1.概念

  以其他模式提供一种代理以控制对这个对象的访问

  去掉了某些功能或增加了某些服务

2.模式

  远程代理 -- 客户端--服务器

  虚拟代理 -- 将一个需要资源很大的对象延时访问,真正需要的时候才创建

  保护代理 -- 权限控制

  智能引用代理 --

     ---静态代理:代理和被代理对象在代理之前是确定的.他们都实现相同的接口或者继承相同的抽象类

     ----继承:功能的叠加会使代理类无限叠加(不推荐)

     ----聚合:增加功能的先后循序只需调整调用顺序

   ---动态代理:代理类和被代理对象之间加入代理处理类

    ----JDK动态代理:只能代理实现了接口的类

    ----CGLib动态代理:对指定目标类产生一个子类,通过方法拦截所有父类方法的调用

    

3.动态代理实现思路:通过Proxy的newProxyInstance返回代理对象

  -声明一段源码(动态产生代理)

  -编译源码(JDK Compiler API) 产生新的类(代理类)

  -将这个类load到内存中,产生一个新的对象(代理对象)

  -return 代理对象

 

4.应用场景

  --当调用某个jar中的方法,我们不方便修改其源码时,就可以用代理在方法前后加入某些代码 -- AOP

Java模式的秘密--java常用的几种模式的更多相关文章

  1. Spring中常用的23中设计模式

    1.spring 中常用的设计模式有23中  分类  设计模式  创建型 工厂方法模式(FactoryMethod).抽象工厂模式(AbstractFactory).建造者模式(Builder).原型 ...

  2. VIM 三种模式和常用命令

    引言 大数据开发工作中,周围的同事不是用 VIM 就是 Emacs,你要是用 UltraEdit 或 notepad++ 都不好意思跟人家打招呼...什么插件呀.语法高亮呀.拼写检查呀,能给它开的都给 ...

  3. 工厂方法模式(Factory Method)和抽象工厂模式(Abstact Factory)

    分类 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的.工厂模式在<Java 与模式>中分为三类:1)简单工厂模式(Simple Facto ...

  4. Hive 之元数据库的三种模式

    Hive 介绍 http://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3114180.html Hive的数据类型和数据模型 http://www ...

  5. SQL Server 2012复制教程以及复制的几种模式

    简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...

  6. 深度分析Linux下双网卡绑定七种模式 多网卡的7种bond模式原理

    http://blog.csdn.net/abc_ii/article/details/9991845多网卡的7种bond模式原理 Linux网卡绑定mode共有七种(~) bond0.bond1.b ...

  7. 仿今日头条最强顶部导航指示器,支持6种模式-b

    项目中经常会用到类似今日头条中顶部的导航指示器,我也经常用一个类似的库PagerSlidingTabStrip,但是有时并不能小伙伴们的所有需求,所以我在这个类的基础上就所有能用到的情况做了一个简单的 ...

  8. 【转载】DDD分层架构的三种模式

    引言 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和分层架构的相关知识. DDD DDD(Domain Driven Design,领域驱动设计)作为一种软件开发方法,它可以帮助我们设计高 ...

  9. SQL Server复制入门(二)----复制的几种模式

    简介 本系列文章的上一篇对复制是什么做了一个概述.本篇文章根据发布服务器,分发服务器和订阅服务器的组织方式和复制类型来讲述常用复制的几种模式. 模式的选择 选择复制的模式取决于多个方面.首先需要考虑具 ...

随机推荐

  1. DP———5.拣馅饼(记忆化搜索,得到最大值)

    都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内.馅饼如果掉在了地上当然就 ...

  2. Python之Excel编程

    excel编程:excel中是unicode编码方式 需要使用xrld,xlwt和openpyxl这三个模块,需先通过pip install下载     xlrd 读取模块:xls,xlsx     ...

  3. win安装pycurl和linux安装pycurl

    1.win pip install wheel http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载对应的包: pip install e:\pycurl-7.4 ...

  4. 第二届360杯全国大学生信息安全技术大赛部分解题思路(WEB安全)

    第一题如下: 用burpsuit设置好代理后,点击发送验证码,可以看到如下: 然后go之后可以看到如下的验证码: 提交验证码后即可获得key 第二题如下: 通过/data/mysql_error_tr ...

  5. Angular1 基础知识 浅析(含锚点)

    1.angular:前端js框架  https://angularjs.org ① SPA单页应用程序 通过ajax从后台获取数据,动态渲染页面,不出现白屏,提高效率,节省流量 (1)锚点值 锚点:是 ...

  6. vue刨坑(二)

    vue实例 vue实例 每一个应用都是通过vue这个构造函数创建根实例(root instance),启动 new vue(选项对象) 需要传入选项对象,对象包含挂载元素,数据,模板,方法等. el: ...

  7. 2018多校第三场 hdu6331 M :Walking Plan

    题目链接 hdu6331 自我吐槽,这场多校大失败,开局签到因输入输出格式写错,wa了3发.队友C题wa了1个小时,还硬说自己写的没错,结果我随便造了个小数据,他都没跑对.然后跑对了后又进入了无限的卡 ...

  8. redis 的命令总结

    此博客为技术收集和个人的学习积累,如侵犯了您的权益,请联系我,我会及时删除,谢谢 [Redis] redis-cli 命令总结 Redis提供了丰富的命令(command)对数据库和各种数据类型进行操 ...

  9. FIRST SCRAPY PRJ

    zpc@Lenovo-PC:/prj/pyscrapy/a$ scrapy startproject helloword New Scrapy project 'helloword' created ...

  10. VS2013的Release模式 和 debug 模式

    在有的情况下,我们可能不能直接利用Debug模式进行程序调试,那么如何在Release模式下进行程序调试呢? 一.将项目属性设置为Release,生成--->配置管理器: 二.按Alt+F7,弹 ...