java设计模式
提交最后一行代码
这个作者很懒,什么都没留下…
展开
-
并发程序设计之Future模式
Future模式future模式是Java并发设计模式的一种,jdk内置了实现方式,可以直接拿过来用。当然也可以自己进行设计。这种模式实际上是把代码的执行从同步的方式改为了异步,当一个调用方法执行的时间比较长的时候,在原先单线程模式必须要等到该方法执行完成返回结果后在进行下一步的操作,如果这个操作是远程方法的调用,或者需要处理相当多的业务的时候,那么这个处理效率是非常低的,因此出现了future模式原创 2016-01-18 11:53:57 · 461 阅读 · 0 评论 -
Spring源码分析3 — spring bean创建和初始化
1 介绍创建并初始化spring容器中,refresh()方法中解析xml配置文件,注册容器后处理器,bean后处理器,初始化MessageSource,ApplicationEventMulticaster广播器,注册完ApplicationListener监听器后,关键一步就是创建和初始化其他非lazy-init的singleton beans。这样在容器初始化好的时候,这些singleton转载 2017-12-11 11:07:31 · 267 阅读 · 0 评论 -
Spring源码分析2 — XML配置文件的解析流程
1 介绍创建并初始化spring容器中,关键一步就是读取并解析spring XML配置文件。这个过程比较复杂,本文将详细分析整个流程。先看涉及到的关键类。XmlWebApplicationContext:web应用的默认Spring容器XmlBeanDefinitionReader:读取XML并解析xml文件DocumentLoader:文件先被读取为了原始的输入流InputStream,然后封装为转载 2017-12-11 10:41:58 · 282 阅读 · 0 评论 -
23种设计模式汇总整理
设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式转载 2017-05-27 11:53:05 · 261 阅读 · 0 评论 -
JAVA设计模式之门面模式(外观模式)
医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。 首先病人必须先挂号,然后门诊。如果医生要求化验,病人必转载 2017-05-27 11:45:26 · 257 阅读 · 0 评论 -
JAVA设计模式初探之装饰者模式
这个模式花费了挺长时间,开始有点难理解,其实就是定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。设计初衷:通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的。转载 2017-05-26 10:51:27 · 276 阅读 · 0 评论 -
JAVA设计模式初探之适配器模式
1. 概述 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2. 解决的问题 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 下面是两个非常形象的例子 3. 模式中的角色 3.1 目标接口(Target):客户所期待的接转载 2017-05-24 11:53:15 · 325 阅读 · 0 评论 -
JAVA设计模式之抽象工厂模式
本文继续介绍23种设计模式系列之抽象工厂模式。前面已经介绍过简单工厂模式和工厂方法模式,这里继续介绍第三种工厂模式-抽象工厂模式,还是以汽车的制造为例。例子背景:随着客户的要求越来越高,宝马车需要不同配置的空调和发动机等配件。于是这个工厂开始生产空调和发动机,用来组装汽车。这时候工厂有两个系列的产品:空调和发动机。宝马320系列配置A型号空调和A型号发动机,宝马230系列配置B转载 2017-05-24 11:35:49 · 226 阅读 · 0 评论 -
JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部转载 2017-05-24 11:09:01 · 229 阅读 · 0 评论 -
JAVA设计模式之代理模式
【代理模式应用场景举例】比如在玩“极品飞车”这款游戏,如果游戏者手中的金钱达到了一定的数量就可以到车店买一部性能更高的赛车,那么这个卖车的“车店”就是一个典型的“汽车厂家”的“代理”,他为汽车厂家“提供卖车的服务”给有需求的人士。从面向对象的方面考虑,“销售汽车的代理”也是一个对象,那么这个对象也具有一定的状态,在软件项目中这个对象也具有管理财务进销存的基本功能,那么在设计时就要以面向OOP编转载 2017-05-23 15:54:13 · 211 阅读 · 0 评论 -
Java设计模式之策略模式
本文继续介绍23种设计模式系列之策略模式。背景在软件开发中常常遇到这种情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的转载 2017-05-23 15:45:23 · 272 阅读 · 0 评论 -
JAVA设计模式初探之桥接模式
生活中的一个例子: 拿汽车在路上行驶的来说。既有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于交通工具(汽车)有不同的类型,它们所行驶的环境(路)也有不同类型,在软件系统中就要适应两个方面(不同车型,不同道路)的变化,怎样实现才能应对这种变化呢?概述:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“转载 2017-05-23 11:58:27 · 379 阅读 · 0 评论 -
Spring源码分析1 — 容器启动流程
1 主要类部署web应用时,web容器(比如Tomcat)会读取配置在web.xml中的监听器,从而启动spring容器。有了spring容器之后,我们才能使用spring的IOC AOP等特性。弄清spring容器启动流程,有利于理解spring IOC中的各种特性,比如BeanPostProcessor,MessageSource,ApplicationListener等。我们先来看下容器启动流转载 2017-12-08 17:35:47 · 280 阅读 · 0 评论