- 浏览: 25449 次
- 性别:
- 来自: 成都
最新评论
文章列表
建造者模式:将一个复杂对象的创建和它的表示相互分离,使得同样的构建过程可以有不同的表示
建造者模式的优点:
具有很强的封装性,高层调用者不用关心具体对象的组装过程,实现高层调用和对象组装过程的解耦,对象的组装过程也是相互独立的,易于扩展
标准类图:
使用建造者模式构建汽车:
汽车抽象接口:
package org.robbie.hibernate.generate.builder;
public interface Car {
public void wheel();
public void architect();
public ...
原型模式:通过克隆对象来进行创建对象
原型模式的优点:
1.原型模式的拷贝属于二进制的拷贝,比new的创建性能更好
2.克隆对象不会调用类的构造函数,可以进行逃避
3.多线程操作同一个对象时,可以通过克隆的方式复制到不同的线程中,避免了线程不安全
标准类图只需要实现Cloneable即可
public class MyClass implements Cloneable {
private String name;
public String getName() {
return name;
}
public void setName ...
抽象工厂模式跟工厂方式模式类似,不同的是工厂方式模式生产的是一个抽象的产品,而抽象工厂模式生产的是多个抽象的产品。
标准类图
抽象工厂模式:
顶层抽象产品类:
public interface Product {
String getInfo();
}
第二层抽象产品(抽象出两个不同的产品)
public interface Phone extends Product{
public void call();
}
public interface Pad extends Product{
public void watch ...
工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪一个类
工厂模式有点:
1.将对象的创建进行封装,实现细节的隐藏,高层调用者不用关心创建的具体的产品类,只了解产品类的抽象,具体产品类的创建是由工厂进行决定。使调用者和产品的创建进行解耦。
标准类图:
一、 简单工厂模式(不需要抽象工厂)
产品抽象类:
public interface Product {
String getInfo();
}
具体产品类:
public class Iphone implements Product {
@Override
public String ...
确保一个类只有一个实例的模式成为单例模式。
单例模式的优点:
1.减少内存开支,降低系统性能消耗
2.避免对资源的多重操作,确保只有一个类实例进行动作
缺点:
1. 没有抽象,没有接口,无法被扩展
2. 并行开发,测试不方便,只有能单例模式开发完毕才能对类进行测试
标准类图:
一、标准的单例模式(预先实例化,项目当推荐使用此模式)
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton(){ ...
spring加载配置文件
- 博客分类:
- spring
在spring中加载配置文件的方式:
@Configuration
@PropertySource({"classpath:config.properties"})
//@Import(DataSourceConfig.class)
public class DefaultAppConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new Property ...
8.Spring MVC
- 博客分类:
- spring
Spring MVC是spring构建的前端MVC web框架,利用spring本身的DI,AOP等特性,实现松耦合,减少web端代码的开发,提高web端的开发效率,并且提供web端的服务特性,例如验证,状态管理等。
搭建Spring MVC:
spring MVC的核心是DispatcherServlet,我们称之为中心控制器,通过中心控制器的解析,找对对应spring bean作为controller进行处理。
首选进行web.xml配置:
<servlet>
<servlet-name>basic</servlet-nam ...
7.spring事务
- 博客分类:
- spring
事务是一个完整的逻辑单元,在执行的时候要嘛同时成功,要嘛同时失败,中间不允许被中断,也就是说事务是一个全有或全无的过程。
事务拥有4个特性:
原子性:事务是由一个或者多个活动单元组成的。原子性确保了事务中所有操作全部发生或者全部不发生。如果所有活动都成功了,事务也就成功了。如果任意一个活动失败了,整个事务也就失败并回滚。
一致性:一旦事务完成(不管成功或者失败),事务保证业务处于一致的状态,数据不允许被破坏(所有活动要嘛成功一致,要嘛失败一致)。
隔离性:事务允许多个用户对相同数据进行操作,每个用户的操作不会与其他用户纠缠在一起。因此,事务会被隔离,避免发生同步读写数 ...
6.spring持久化相关
- 博客分类:
- spring
Spring在持久化上做出了一个统一的模型,目的是为了简化持久化的开发,使得数据访问层和持久化方案的选择相互独立。
统一了数据访问异常:
传统的JDBC异常分类比较薄弱,并且都为检查型异常,在程序员对数据库的操作过程中,需要强制的去捕获SQLException,第一是工作比较繁琐,第二个就算捕获了之后其实际意义也不大,并且SQLException包含的异常问题不能够准确的进行表达,有可能是连接异常,有可能是数据访问的其他问题,spring在此基础上统一了数据访问异常,提供更加丰富的异常管理,并且所有异常都会运行期异常,不需要用户做出捕获动作,需要进行捕获时 ...
5.spring aop
- 博客分类:
- spring
切面,是面向对象编程中一个重要的术语,切面能够模块化系统当中横切关注点,这些横切关注点会横跨系统当中的多个组件,例如安全,事务,日志,缓存,如果在每个组件中都去自行完成这些关注点的代码编写,那么横切关注点的代码将会散步在系统的各个角落,从系统灵活性和维护性来说,造成了巨大的阻碍。所以将横切关注点进行模块化,形成切面,将核心的业务与切面进行分离,能够更加有限的对程序进行管理,使得开发人员只关注于核心业务的编写,并从横切关注点的逻辑中脱离出来。
AOP术语:
切面:系统当中的交叉业务,一般指安全,事务,日志,缓存这些横切关注点,切面是对这些横切关注点的模块化。
通知: ...
4.基于注解的bean装配
- 博客分类:
- spring
对于spring提供传统XML配置方式来说,由于项目的日益扩大,XML配置信息也会随之增加,对于项目的后期管理和维护造成一定的复杂性,为了减少XML配置信息,spring提供了基于注解的配置。
spring提供了自动装配和自动检测功能,用于减少XML配置信息。
spring的自动装配4种策略:
byName
根据名字进行自动装配,改名字为spring配置中的id名,如果没有找到对应的id名则不进行装配
byType
根据bean的属性相同类型的其他bean进行自动装配,如果没有找到相同类型的其他bean,则不进行装配
c ...
3.装配bean(二)
- 博客分类:
- spring
本章主要继续介绍spring基于XML装配bean的知识,主要介绍spring对属性的注入。
设值注入简单值和引用其他bean:
package org.robbie.test.spring.beans;
public interface Instrument {
void play();
}
package org.robbie.test.spring.beans;
public class Flute implements Instrument {
@Override
public void play() {
Sy ...
2.装配bean(一)
- 博客分类:
- spring
创建应用对象之间协作的行为,称为装配,其实质是spring容器建立bean之间关系依赖的过程。spring提供两种方式来进行创建,基于XML的配置与基于注解的配置。
在spring中有两种容器,一种为beanFactory,是所有容器的父级,第二种为ApplicationContext,ApplicationContext拥有一些特定的功能,比beanFactory更加丰富,除非有特定的情况,一般考虑用ApplicationContext作为容器,另外beanFactory是延迟加载,即当第一次使用bean的时候才进行加载,而applicationConte ...
1.spring之旅(一)
- 博客分类:
- spring
随着JavaEE的不断发展,历经数年之后,在总结了EJB对企业级开发上种种不利,由rod johson开发的spring已经逐渐成为javaEE开发的事实标准与框架,spring的出现让POJO的编程思想逐渐深入到各开发人员的脑海里,目的是为了简化java企业级开发。为了降低java企业级开发的复杂性,spring提出了4种策略:
1. 基于POJO的轻量级和最小侵入式编程
2. 通过依赖注入和面向接口实现送耦合
3. 基于切面和惯例进行声明式编程
4. 通过切面和模板减少样板代码
松耦合具有两面性,一方面严重的依赖耦合会导致系统代码变得极其复 ...
1、引入需要的war包依赖(利用插件排除类文件),api依赖,利用war包插件排除web.xml以及共同文件,最后实现静态资源和界面的共享,可启动项目,
此方法在开发当中比较麻烦,因为当依赖的api包,静态文件或者界面有修改时,不能够及时反应,只能由依赖的war包再次完成打包安装之后才能够响应。
2、通过jetty实现嵌入式启动,自己动态构建jetty Server, 依赖的war包工程全部换成jar包类型进行依赖引入,通过自己控制jetty Server对象去加载对应的界面资源,
至于静态资源可以通过spring mvc进行静态资源映射,把静态资源放在class路径下,这样Je ...